排序演算法 氣泡排序(改進)

2021-10-03 22:00:19 字數 1037 閱讀 2073

假如我們運氣好,用了1輪就已經將整個序列排序好了,整個數列已然是有序的了。可是我們的排序演算法仍然「兢兢業業」地繼續執行第2輪、第3輪、直至n-1輪,這就很沒必要。也就是說如果序列已經有序,每一輪排序還是會繼續比較相鄰的元素,這就相當於做了一些沒用的操作。

這種情況下,如果我們能判斷出數列已經有序,並且做出標記,剩下的幾輪排序就可以不必執行,提早結束工作。因此我們可以用乙個標誌變數來標準序列是否有序,當一次冒泡過程中發現沒有交換操作時,表明序列已經排好序了,便終止冒泡操作。用乙個標誌變數標記在比較過程中是否發生了資料交換。

#include

/*氣泡排序的排序思路是:

通過無序區的相鄰元素的比較和位置的交換,使最大的元素往上移動

每一輪排序選出無序區的最大的元素,加入有序區中

*/void

bubble_sort

(int value,

int n)

}//如果序列已經有序結束迴圈

if(issorted)}}

intmain()

;printf

("排序前的資料為:\n");

for(

int i=

0; i<

10;i++

)printf

("%d "

,value[i]);

printf

("\n\n");

bubble_sort

(value,10)

;printf

("排序後的結果為:\n");

改進的氣泡排序演算法

氣泡排序演算法,是最基本的排序演算法,它屬於交換排序。設想被排序的陣列r 1.n 垂直豎立,將每個資料元素看作有重量的氣泡,根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r,凡掃瞄到違反本原則的輕氣泡,就使其向上 漂浮 交換位置 如此反覆進行,直至最後任何兩個氣泡都是輕者在上,重者在下為止。若記...

氣泡排序及其改進演算法

第乙個排序函式 sort1 為氣泡排序的典型實現,第二和第三個為改進後的排序函式 include include define len 20000 double sort1 int int double sort2 int int double sort3 int int int main int ...

改進的氣泡排序演算法

氣泡排序演算法,是最基本的排序演算法,它屬於交換排序。設想被排序的陣列r 1.n 垂直豎立,將每個資料元素看作有重量的氣泡,根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r,凡掃瞄到違反本原則的輕氣泡,就使其向上 漂浮 交換位置 如此反覆進行,直至最後任何兩個氣泡都是輕者在上,重者在下為止。若記...