這篇複習氣泡排序。
氣泡排序也是一種穩定排序、內排序。
氣泡排序的基本思想:對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
插入排序比氣泡排序快!
上面說的是普通的氣泡排序演算法,時間複雜度是o(n^2),這種方法只能一趟排序操作只能找到乙個最大值或最小值,消耗時間太多。
改進方法1:我們可以讓每趟排序中進行正向和反向兩遍冒泡的方法,一次就可以同時得到最大值和最小值,這樣一來排序的趟數減少了一半。這種方法形象來說就像振盪小球,如果兩端已經選擇出來最大值和最小值,那麼下一趟排序的時候就會縮小排序的距離,後面振盪的幅度就會減小,一直當幅度為0,是不是很像振盪小球由於阻尼的存在,不斷減少幅度,直至停止。
改進方法2:在每趟排序過程中,用標記位記錄每趟排序中最後一次交換的位置,如果最後一次交換的位置在0,那麼就說明整個陣列排序完畢。這種改進的思想是把先前排序的先驗資訊使用上,減少排序的次數。
實現**:
#includeusing namespace std;
void bubblesort(int a, int n) }}
void bubblesort_2(int a, int n)
high--;
for(j = high; j > low; j--)
low++; }}
void bubblesort_3(int a, int n)
} i = pos; }}
int main()
; bubblesort_3(a, 6);
for(int i = 0; i< 6; i++)
cout<
資料結構 排序 氣泡排序演算法
氣泡排序 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序對n個專...
資料結構複習 氣泡排序與快速排序
氣泡排序c語言大家都學過,就不多說,說一下補充的部分。就是當當前的數不再發生交換時,就退出迴圈。這樣可以減少迴圈的次數。以及,氣泡排序是一種穩定的排序演算法 include using namespace std intmain int i 0,j 0,k 0 int x int flag 0 wh...
資料結構 氣泡排序演算法
1 氣泡排序 氣泡排序之所以叫氣泡排序,是因為它每一種元素都像小氣泡一樣根據自身大小一點一點往陣列的一側移動。基本思想是假如需要排序的陣列元素有n個,則進行n 1輪比較,第k輪比較中元素的比較次數為n k次,演算法的複雜度準確界為o n2 演算法步驟如下 比較相鄰的元素。如果第乙個比第二個大,就交換...