內部排序之氣泡排序

2021-08-02 11:32:51 字數 1168 閱讀 6104

基本思想是逐個比較相鄰資料,如果前面資料大於後面資料,則進行交換,一輪比較結束後,最大數浮出至最後(形成有序佇列)。迴圈處理無序佇列,直至全部有序。

20 34 19 4 33 59 90 18

20 19 4 33 34 59 18 90

19 4 20 33 34 18 59 90

4 19 20 33 18 34 59 90

4 19 20 18 33 34 59 90

4 19 18 20 33 34 59 90

4 18 19 20 33 34 59 90

4 18 19 20 33 34 59 90

上述示例是氣泡排序的簡單過程,藍色字型區域是不停遍歷之後產生的有序佇列,黑色字型區域是未排序的無序佇列,每一輪都產生當前無序佇列中的最大值,並進入有序佇列。

氣泡排序中主要包含關鍵字比較c和交換操作s。

最優情況:

4 18 19 20 33 34 59 90

本身序列是有序的:

比較次數c = (n -1) + (n - 2) + … + 1 = n*(n - 1)/2

交換次數s = 0

最壞情況

90 59 34 33 20 19 18 4

本身序列是反序的:

比較次數c = (n -1) + (n - 2) + … + 1 = n*(n - 1)/2

交換次數s = (n -1) + (n - 2) + … + 1 = n*(n - 1)/2

未作優化情況下,氣泡排序需要比較所有資料,時間複雜度都是o(n^2)。

氣泡排序不需要臨時儲存空間,所以空間複雜度是o(1)。

氣泡排序演算法中是將大的資料進行交換,如果兩個相鄰資料是相等的,不會進行交換,所以氣泡排序是穩定的。

void bubblesort(int arr, int nlen)}}

}

氣泡排序主要包含了比較和交換操作,比較操作不區分場合,都需要比較所有資料,所以在最優的情況下複雜度也達到了o(n^2)。

當一遍輪詢後未發生交換操作,說明序列本身已經有序的,排序完成。此種情況下,最優情況下在一次遍歷後即完成整個排序,時間複雜度可以優化至o(n)。

內部排序 氣泡排序

內部排序 氣泡排序。n個記錄進行氣泡排序的基本方法是 首先將第乙個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則交換這2個記錄的值,然後比較第二個記錄和第三個記錄得關鍵字,以此類推,直到第n 1個記錄和第n個記錄得關鍵字比較過為止。上述過程稱為第一趟氣泡排序,其結果是關鍵字最大的記錄被交換到...

資料結構 內部排序之氣泡排序

1.基本思想 每次比較兩個相鄰的元素,如果他們的順序錯誤就把他們交換過來 2.具體做法 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越...

內部排序法 氣泡排序法

氣泡排序法又稱為交換排序法,是由觀察水中冒泡的變化啟發而來。氣泡排序是由第乙個元素開始,比較相鄰元素大小,若大小順序有誤,則對調後再進行下乙個元素的比較。如此掃瞄過一次之後就可確保最後乙個元素是位於正確的順序。接著再逐步進行第二次掃瞄,直到完成所有元素的排序關係為止。例如 陣列 6 4 9 8 3 ...