演算法基礎之氣泡排序

2021-07-27 20:29:59 字數 1710 閱讀 7743

是讓最大的數浮動到陣列最後的位置,其次大的數浮動到陣列倒數第二個位置。

當然,你也可以從大到小排序,也可以從後向前冒泡。其特徵操作是相鄰元素的比較和交換。

bubble-sort(a)

for i = a.length to 1

for j = 1 to i

ifa[j] < a[j - 1]

exchance a[j] and

a[j - 1]

public

static

int bubblesort(int queue)

int temp;

for (int i = queue.length - 1; i > 0; i--) }}

return

queue;

}

陣列編號01

2345

初始狀態52

4613

第一次比較25

4613

第二次比較24

5613

第三次比較24

5613

第四次比較24

5163

第五次比較(第一次排序)24

5136

第二次排序24

135

6

第三次排序21

34

5

6

第四次排序

1

2

3

4

5

6

第五次排序

1

2

3

4

5

6

1、其外層迴圈執行 n - 1次。內層迴圈最多的時候執行n次,最少的時候執行1次,平均執行 (n+1)/2次。所以迴圈體內的比較交換約執行 (n - 1)(n + 1) / 2 = (n^2 - 1)/2次。其複雜度為o(n^2)

2、氣泡排序演算法的空間複雜度為乙個常量,即不隨被處理資料量n的大小而改變時,可表示為o(1);

從例子處我們可以看到當第四次外層迴圈完成後,排序就完成了。後面的迴圈只有比較,而沒有交換。就說明陣列已經是有序的了,這時可以跳出迴圈。因此,我們可以設定乙個布林變數,記錄一次外層迴圈中是否發生交換,如果未發生交換,跳出演算法。

public

static

int bubblesort(int queue)

int temp;

boolean flag = false;

for (int i = queue.length - 1; i > 0; i--)

}if(!flag)

}return

queue;

以上,就是筆者對於氣泡排序的初略見解。

基礎排序演算法之氣泡排序

1.主體 兩個迴圈 2.時間複雜度 o n 2 3.過程 對於公升序,比較相鄰兩個數,如果第二個數小,則交換位置 從數列後往前比較,最終第乙個數是最小的 重複上述步驟 demo include includeusing namespace std 氣泡排序 void my swap int firs...

基礎演算法之氣泡排序

1.今天面試被問到最簡單的氣泡排序,氣泡排序看似簡單其實也不簡單,在此重新複習一下氣泡排序 氣泡排序的時間複雜度是n平方,如果陣列已經有序,可以進行優化,sort3方法在陣列有序的時候,只需要遍歷一次陣列,時間複雜度是n,空間複雜度只需要乙個int變數在交換的時候使用 public void sor...

基礎演算法之氣泡排序演算法

在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。以隨機產生的五個數為例 li 354,405,469,82,345 氣泡排序是怎麼實現的?首先先來個大...