氣泡排序也是一種簡單直觀的排序演算法。從最後乙個元素開始,每次比較兩個相鄰元素,如果他們的順序錯誤就把他們交換過來。對每一對相鄰元素作同樣的工作,從後到前。一次迴圈完畢後,最前的元素是最小的數。即經過交換,最小的數「浮」到了數列的最前端。持續每次對未確定最終位置的元素重複上面的步驟,直到沒有任何一對數字需要比較。 對於大小為n的陣列,需要迴圈n-1次。為了提高效率,需要設定乙個標籤,如果在迴圈中發生了交換,標籤為1,如果沒有發生交換,標籤為0,說明說有的元素排列完成,演算法停止。
氣泡排序
bubblesort(a)
flag=true
;for i=0 to a.length-2 && flag==true
flag=false
; for j=a.length-1 downto i+1
ifa[j]swap(a[j],a[j-1])
flag=true
;
public
class method ;
bubblesort(array);
for(int x:array)
}public
static
void bubblesort(int array)}}
}}
時間複雜度:
最好情況:o(n)
最壞情況:o(n^2)
平均情況:o(n^2)
空間複雜度:o(1),原址排序
1、冒泡是穩定的演算法。而其時間效率是不確定的,在最好的情況下僅執行1趟冒泡做n-1次比較,無交換,而在最壞的情況下執行n-1趟冒泡,第i趟做了n-i次比較,並執行n-i次物件交換。
2、氣泡排序在每趟冒泡之後,至少有乙個元素確定最終位置。
3、選擇排序、插入排序和氣泡排序都是時間複雜度為o(
n2) 的排序演算法,而且分別是堆排序、希爾排序和快速排序的基本演算法,演算法思想中都包含了n-1次迴圈和比較、交換等,下面是具體的區別。
排序演算法
選擇排序
插入排序
氣泡排序
每趟迴圈
比較多次交換一次
比較多次,移動多次
比較多次,交換多次
比較次數是否和序列有關
無關有關
有關每次迴圈後是都能確定乙個元素的位置能不能
能改進演算法
堆排序希爾排序
快速排序
氣泡排序演算法總結
氣泡排序演算法應該說是進入程式設計界最簡單又是最經典的演算法。氣泡排序演算法的思路是第乙個元素和第二個元素進行比較,如果第乙個元素大於第二個元素進行位置調換,如果不大於將進行下面的元素就行比較,即第二個元素和第三個元素進行比較,一直這樣比較下去,一直到最大的元素被交換到最後。一趟氣泡排序完成。進行下...
排序演算法總結(1) 氣泡排序
公升序排列 從第乙個元素開始,對陣列中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在後面,一輪比較完畢,乙個最大的數沉底成為陣列中的最後乙個元素,一些較小的數如同氣泡一樣上浮乙個位置。n個數,經過 n 1輪比較後完成排序。如下 public class bubblesort priva...
排序演算法 3 氣泡排序與快速排序
氣泡排序演算法原理 1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個 2 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。3 針對所有的元素重複以上的步驟,除了最後乙個。4 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...