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

2021-09-20 15:21:50 字數 1042 閱讀 2546

氣泡排序(bubble sort),又被稱為氣泡排序或泡沫排序。

它是一種較簡單的排序演算法。它會遍歷若干次要排序的數列,每次遍歷時,它都會從前往後依次的比較相鄰兩個數的大小;如果前者比後者大,則交換它們的位置。這樣,一次遍歷之後,最大的元素就在數列的末尾! 採用相同的方法再次遍歷時,第二大的元素就被排列在最大元素之前。重複此操作,直到整個數列都有序為止

氣泡排序時間複雜度

氣泡排序的時間複雜度是o(n2)。

假設被排序的數列中有n個數。遍歷一趟的時間複雜度是o(n),需要遍歷多少次呢?n-1次。

因此,氣泡排序的時間複雜度是o(n2)。

氣泡排序穩定性

氣泡排序是穩定的演算法,它滿足穩定演算法的定義。

演算法穩定性 – 假設在數列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;並且排序之後,a[i]仍然在a[j]前面。則這個排序演算法是穩定的

下面以數列為例,演示它的氣泡排序過程(如下圖)。

先分析第1趟排序

當i=5,j=0時,a[0]a[2]。此時,交換a[1]和a[2]的值;交換之後,a[1]=30,a[2]=40。

當i=5,j=2時,a[2]>a[3]。此時,交換a[2]和a[3]的值;交換之後,a[2]=10,a[3]=40。

當i=5,j=3時,a[3]a[5]。此時,交換a[4]和a[5]的值;交換之後,a[4]=50,a[3]=60。

於是,第1趟排序完之後,數列變成了。此時,數列末尾的值最大。

根據這種方法:

第2趟排序完之後,數列中a[5…6]是有序的。

第3趟排序完之後,數列中a[4…6]是有序的。

第4趟排序完之後,數列中a[3…6]是有序的。

第5趟排序完之後,數列中a[1…6]是有序的。

第5趟排序之後,整個數列也就是有序的了。

public class bubblesort

}if(flat==0)

} }

演算法基礎 氣泡排序

從數列第乙個數字開始,與相鄰的後一位數字比較,如果前一位數字比後一位大,則置換它們的位置,一輪下來排到最後的是最大的數字,直到數列完全有序。要點 1.每輪排序最大的數字會被置換到最後,下一輪就不需要再對比這個數字了。因此第一輪需要對比n 1次,第二輪需要n 2次,第x輪只需要對比n x次。2.如果數...

演算法基礎 氣泡排序

氣泡排序是一種經典的排序演算法,可能是我們學習過程中學習到的第乙個排序演算法。氣泡排序,顧名思義,一輪一輪把小元素從後面替換到前面 或者是大元素逐步替換到後面 的一種演算法。假如有乙個長度為10的陣列array,程式會進行n輪掃瞄,第一輪掃瞄會從array 0 到array 9 進行掃瞄,若存在前面...

基礎演算法 氣泡排序

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