每日一演算法 》氣泡排序

2022-07-17 04:27:15 字數 1143 閱讀 6293

氣泡排序定義:

它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端,故名。

氣泡排序演算法的運作如下:

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

分析:1.最壞時間複雜度:n的平方;

2.最好的時間複雜度:n;

3.平均時間複雜度:n的平方;

4.比較穩定的;

5.屬於交換排序(氣泡排序和快速排序)。

先來段簡單的程式:

#includevoid bubblesort(int a,int

n) }

}} void print(int a,int n) //

列印陣列

printf("\n

");}

intmain()

; //

測試資料

print(a,5

); bubblesort(a,5);

print(a,5);

return0;

}

改進版:

如果已經有序的增加乙個標誌位,來看第i個後如果有序就會完成,下次就不會排序了!

#includevoid bubblesort(int a,int

n) }

if(s==0

)

}} void print(int a,int n) //

列印陣列

printf("\n

");}int

main()

; //

測試資料

print(a,5

); bubblesort(a,5);

print(a,5);

return0;

}

每日一演算法之氣泡排序原理及實現

by zxy,qq群 168424095 氣泡排序基本原理 大泡在上,小泡在下 時間複雜度 o n 2 不及堆排序 快速排序的o nlogn,底數為2 一路 二路歸併排序 不平衡二叉樹排序的速度均比氣泡排序快,且具有穩定性,速度不及堆排序 快速排序。氣泡排序是經過n 1趟子排序完成的,第i趟子排序從...

每日一演算法

leetcode 75 號題 給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,...

每日一演算法

答主大二,這學期剛開了資料結構與演算法的課程,但課堂上只提及基礎的增刪改查,遠遠不能滿足對資料結構相對熟悉的需求,因而答主便有了 每日演算法 專題練習的想法,有需要的可以共同練習,與君共勉 適用人群 資料結構與演算法初學者 題型大多來自leetcode 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 ...