C語言陣列的氣泡排序及優化

2021-10-23 22:06:10 字數 920 閱讀 8503

1.大的往下沉,小的往上浮

2.按照氣泡排序的規則

(1)分析問題

(2)設計**

(3)優化處理

#includeint main()

; //排序完成為1,2,3,4,5,6,7,8,9

//比較前後兩個數,如果後乙個比前乙個小,交換,反之無需處理

//下標後移,繼續處理後兩個數

//3,6,7,4,5,2,1,9,8

第一次交換//3,6,4,5,2,1,7,8,9

思路:(1)第一遍處理,依次比較兩個相鄰的數,並判斷是否交換,

for(int i=0;i<9-1;i++)//注:i<9-1是為了最後一次比較的時候防止陣列越界

}for(int i=0;i<9;i++) //輸出第一遍交換的結果,看是否與思路中的相同

printf("\n");

return 0;

} gcc double_sotr.c

./a .out

輸出為:3,6,4,5,2,1,7,8,9//輸出結果與思路相同

解題:全部迴圈,使用巢狀迴圈,外層為第幾次迴圈,內層為交換

#includeint main()

; for(int j=0;j<9;j++)

}} for(int i=0;i<9-1;i++)

printf("\n");

return 0;

} 優化:

減少無用判斷和有序序列時跳過判斷

#includeint main()

; for(int j=0;j<9;j++)

if (flag=0)

]for(int i=0;i<9,i++)

printf("\n");

return 0;

}

氣泡排序及優化

氣泡排序的基本思路是 每次將相鄰兩個數比較,將小的調到前頭 本例按照從小到大排序 按此規律如果有n個數,則要進行n 1趟比較。在第1趟比較中要進行n 1次兩兩比較,在第 j 趟比較中要進行 n j 次兩兩比較。實現如下 include define n 10 int main for i 0 i n...

氣泡排序及優化

只考慮演算法的實現 public static void version1 int array 如果陣列的某一部分本身就是有序的,能顯著減少迴圈的趟數 public static void version2 int array if flag break 分析 我們假設在進行某趟排序時已經有序了,以...

氣泡排序及優化

目錄 一 思路 二 普通寫法 三 模板寫法 四 優化一 五 優化二 六 優化三 氣泡排序 無序區,有序區 從無序區通過交換找出最大元素放到有序區前端。1 比較相鄰元素,如果第乙個比第二個大,交換他們。2 對每一對相鄰元素做同樣操作,從開始第一對倒最後一對。這步做完後,最後的元素是最大的。3 針對所有...