泡沫排序核心思維:每次比較兩個相鄰元素, 順序錯誤就交換

若有n個數字進行排序, 進行排序從第一個元素進行相鄰數字比較,

所以只需進行n - 1次操作即可完成,

程式碼如下:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    //n控制輸入元素之次數, tmp為暫存變數

    int bubbleSortArray[100], n, tmp;
    scanf("%d", &n);  

    for(int i = 0; i < n ; i++)
        scanf("%d", &bubbleSortArray[i]);
    
    for (int i = 0; i < n - 1; i++) //n個數排序, 只需n-1次
    {
        for (int j = 0; j <= n - 1; j++) //從陣列第一個元素比較到n-1個
        {
            if (bubbleSortArray[j] > bubbleSortArray[j + 1])
            {
                //大小互換
                tmp = bubbleSortArray[j]; 
                bubbleSortArray[j] = bubbleSortArray[j + 1];
                bubbleSortArray[j + 1] = tmp;
            }
        }
    }
  
    //輸出結果
    for(int i = 1; i < n ; i++)
        printf("%d ", bubbleSortArray[i]);

    return 0;

}

arrow
arrow

    Will 發表在 痞客邦 留言(0) 人氣()