排序演算法之氣泡排序

2021-06-29 10:35:46 字數 1937 閱讀 5090

氣泡排序(英語:bubble sort,台灣另外一種譯名為:泡沫排序)是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。[1]

c++例項**如下

#include 

using

namespace

std;

void bubblesort(int arr,int n)//n是陣列長度

}}int main()

; bubblesort(a,n);

cout

<< "after sorted : ";

for(int k=0;kcout

<< a[k] << " ";

return

0;}

於是得到以下結果

如果想仔細觀察氣泡排序的每一步的過程,適當修改**如下:

#include 

using

namespace

std;

void bubblesort(int arr,int n)//n是陣列長度

for(int k=0;kcout

<< arr[k] << " ";

}}int main()

; cout

<< "before sorted : ";

for(int k=0;kcout

<< a[k] << " ";

bubblesort(a,n);

cout

<< "\nafter sorted : ";

for(int k=0;kcout

<< a[k] << " ";

return

0;}

得到結果如下:

從數字的移動可以看出,氣泡排序之冒泡的含義了。

從上面的圖也可以看出,第三輪,在已經排好序的情況下,氣泡排序仍然在繼續排序,所以該演算法效率的確不高。可以考慮設定乙個布林標記量,當第二個for迴圈裡面已經排好序,無需再進入第乙個for迴圈。

於是稍微修改一下:

#include 

using

namespace

std;

void bubblesort(int arr,int n)//n是陣列長度

for(int k=0;kcout

<< arr[k] << " ";

}}int main()

; cout

<< "before sorted : ";

for(int k=0;kcout

<< a[k] << " ";

bubblesort(a,n);

cout

<< "\nafter sorted : ";

for(int k=0;kcout

<< a[k] << " ";

return

0;}

結果如下:

下面來分析氣泡排序的時間複雜度。

參考文獻

[1] [2] 氣泡排序維基百科

排序演算法之氣泡排序

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

排序演算法之氣泡排序

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

排序演算法之氣泡排序

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