氣泡排序及優化

2021-06-27 05:08:26 字數 646 閱讀 3336

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

#include #define n 10

int main()}}

for(i = 0; i < n; i++)

printf("%d ", a[i]);

printf("\ncount = %d\n", count);

return 0;

}

氣泡排序可以優化,即當發現沒有進行交換,證明當前序列已經有序結束迴圈。

#include #define n 10

int main()}}

for(i = 0; i < n; i++)

printf("%d ", a[i]);

printf("\ncount = %d\n", count);

return 0;

}

經過優化後,會在某些情況下排序的次數明顯較少。例如5, 4, 1, 2, 3  優化之前需要兩兩比較10次,優化之後只需9次,如果此類情況資料長度龐大,次數減少更多。

氣泡排序及優化

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

氣泡排序及優化

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

氣泡排序及優化

氣泡排序通常是最早接觸的一種排序 原理是 假設是按照從小到大的順序排列 每一次遍歷都會把當前的最大值歸置到應有的位置,在下一次遍歷時忽略最後的已經歸置好的,在前面未排序的部分再次重複,每一次遍歷都不能少。void bubblea int num,int size size是陣列規模 在此基礎上加乙個...