1. 程式人生 > >C語言學習(二)

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判斷語句,根據此語句,將大小不一的數字順序排放。