C語言學習(二)
學習了冒泡法之後才逐漸發覺了C語言的難處,冒泡法在第一次接觸時,極容易在邏輯上犯錯,導致思維轉不過來。
首先,在定義時,為了優化程式碼,採用了int len = sizeof(a)/sizeof(int)為下面程式碼所用的數字。由於int型固定為4位元組,而主要根據陣列a裡的個數所確定len的數字。
下面是冒泡法的程式碼:
#include <stdio.h>
int main()
{
int a[10]={3,5,2,234,4567,87,23,8,90,10};
int x,y,temp;
int len=sizeof(a) / sizeof(int);
for(x = 0;x < len -1;x++)
{
for(y = 0;y < len-x-1;y++)
{
if(a[y] > a[y+1])
{
temp = a[y];
a[y] = a[y+1];
a[y+1] = temp;
}
}
for(y = 0;y < len ;y++)
{
printf("%d ",a[y]);
}
printf("\n");
}
return 0;
}
其中,因為假如10個數字,則len為10,外迴圈為兩個數比大小,最多隻有9次,所以為len-1,而剩下的數迴圈的次數則是減去之前的數迴圈次數來定的,所以為len-x-1。
冒泡法的核心,就是中間的if判斷語句,根據此語句,將大小不一的數字順序排放。