氣泡排序,重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
氣泡排序演算法的運作如下:(從後往前)
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後乙個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
若檔案的初始狀態是正序的,一趟掃瞄即可完成排序。所需的關鍵字比較次數和記錄移動次數均達到最小值:比較次數: n-1 ,移動次數為0 。所以,氣泡排序最好的時間複雜度為o(n) 。
若初始檔案是反序的,需要進行趟n-1 排序。每趟排序要進行 n-i ((1≤i≤n-1))次關鍵字的比較,且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值:比較次數n*(n-1)/2 ,移動次數3n*(n-1)/2 。
氣泡排序的最壞時間複雜度為o(n*n) 。
綜上,因此氣泡排序總的平均時間複雜度為o(n*n) 。
氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,不用交換一下的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。
#include #define size 8void bubble_sort(int a, int
n);
void bubble_sort(int a, int
n) }}
intmain()
;
inti;
bubble_sort(number, size);
for (i = 0; i < size; i++)
printf("\n
");}
氣泡排序實現
演算法原理 氣泡排序是經過n 1趟子排序完成的,第 i 趟子排序從第1個數至第 n i 1 個數,若第 i 個數比第 i 1 個數大,則交換這兩個數,實際上這樣經過 i 次子排序就使得 第1個數至第 n i 1個數之間最大的數交換到了n i 1 的位置上了。實際上氣泡排序時可以優化的,那就是當第 i...
氣泡排序的Python實現
最近被考到乙個簡單演算法 氣泡排序,彷彿是大三的時候學過,大概原理還記得一點,現在除錯了一下把完整 寫出來了,記錄一下。usr bin env python coding utf 8 def bubble sort list len of list len list while len of lis...
氣泡排序的簡單實現
冒泡的意思就是一次迴圈中依次比較相鄰位置的數,滿足則交換。第乙個for代表次數,第二個for來真正的兩兩比較。冒泡的關鍵在於迴圈條件的次數確定,先看第乙個for迴圈是length 1,比如5個數 5 3 1 2 0,那麼看第一次比較後變成3 1 2 0 5 第二次變成 1 20 3 5 第三次變成 ...