交換排序之氣泡排序

2021-07-10 19:14:22 字數 886 閱讀 6700

氣泡排序演算法的基本思想是:假設待排序表長為n,從前往後(或從後往前)兩兩比較相鄰元素的值,若為逆序(即a[i-1]>a[i]),則交換它們,直到序列比較完。我們成它為一趟冒泡,結果將最大(最小)的元素交換到待排序列的最後乙個位置。下一趟冒泡時,前一趟確定的最大元素不再參與比較,待排序列減少乙個元素,每趟冒泡的結果把序列中的最大元素放到了序列的最終位置。

public class bubblesort ;

sort(values);

}/**

* 氣泡排序,交換相鄰的兩個元素確保較大的元素被移動最後。

* * @param values

*/public static void sort(int values)

}}// for

}// sort}

氣泡排序演算法效能分析:

1)空間效率:僅使用了常數個輔助單元,因而空間複雜度為o(1)

2)時間效率:當初始序列有序時,第一趟冒泡比較次數為n-1,移動次數為0,此時直接跳出迴圈,從而最好的情況下的時間複雜度為o(n);當初始序列為逆序時,需要進行n-1趟排序,第i趟排序需要進行n-i次比較,而且每次比較需要移動元素3次來交換元素位置,這種情況下,比較次數為n(n-1)/2,移動次數為3[n(n-1)/2],從而,最壞情況下時間複雜度為o(n²),其平均時間複雜度也為o(n²)。

3)穩定性:由於當i>j且a[i].key=a[j].key時,不會交換兩個元素,從而氣泡排序是乙個穩定的排序方法。

氣泡排序的應用:

當待排序的元素規模小:用氣泡排序。規模大一般用快速排序,堆排序。氣泡排序從空間複雜度和時間複雜度來看並不是最好的排序方法。但是氣泡排序有一些優點:氣泡排序空間複雜度較低,是一種穩定的排序(衝突間相對位置不變),當檔案為正序時冒泡方法最佳。缺點是時間複雜度高,效率不好。

交換排序之氣泡排序

大學學的演算法已經基本遺忘了,最近又重新撿起來好好鑽研一下,那麼就先從排序開始。先說交換排序中的氣泡排序,這個是比較基礎的乙個排序演算法。1 基本思想 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較...

交換排序之氣泡排序

交換排序的主要思路就是在排序過程中,不斷比較待排序序列中相鄰的兩個資料,如果次序相反,則將其位置交換,從而達到排序的目的,氣泡排序和快速排序都屬於交換排序 下面我們介紹氣泡排序的基本原理 氣泡排序是一種比較簡單的排序演算法,基本思想就是對所有的相鄰的記錄的關鍵字進行比較,如果次序不對就將其交換,從而...

交換排序之《氣泡排序》

距離上次寫部落格已經過去20天了,滷煮沒有偷懶,而是畢業找到了新的工作。於是從帝都來到了夏天不冷 冬天也不冷的廈門,2000多公里的路程,不遠千里,公司的環境超級棒!哈哈!開心!面試的時候也被問到了演算法內容,幸虧有所準備!因此準備寫下了,記下來。俗話說 好記性不如爛筆頭!有什麼不對的地方望大神們指...