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