排序演算法之氣泡排序

2021-07-06 06:01:26 字數 800 閱讀 3280

氣泡排序是比較相鄰的值,如果反序,那麼就將這兩個數交換,那麼迴圈到最後的時候將會把最大的數交換到最末尾。

例如序列

氣泡排序剛開始會比較2與4,順序正確,則比較4與8,接著比較8與6,反序,交換8與6。則序列變為。接著繼續比較8與9。按照這樣的過程,最終最大值肯定會交換到最末尾。第一次迴圈後的序列將變為。

typedef

int datatype;

int bubblesort(datatype *array, int size)

for(i = 0; i < size; i++) }}

return

0;}

上面的氣泡排序有乙個缺點,比如待排序序列為乙個已經排好序的序列,如,那麼,對於上面的氣泡排序必須先進行兩兩比較,1與2比較,2與3比較….一直到最後9與10比較,這一趟選出最大值10。接著進行1與2比較,2與3比較….已知到最後8與9比較,選出最大值9。這樣很沒比較,降低了效率。

其實很容易可以發現,當氣泡排序一趟比較後,如果沒有進行交換操作,則這個序列已經排好序了。所以,我們可以對上面的氣泡排序進行改進,加乙個標識變數去判斷某趟比較是否進行了交換操作。如果沒有交換操作,那就意味著該序列已經有序,則結束氣泡排序。

typedef

int datatype;

int bubblesort(datatype *array, int size)

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

}if(tag)

}return

0;}

排序演算法之氣泡排序

參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...

排序演算法之氣泡排序

對於大多數學計算機的人來說,氣泡排序應該都是接觸的第一種排序方式,氣泡排序的排序思想是比較簡單的,它的演算法的是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了...

排序演算法之氣泡排序

氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,...