排序001 氣泡排序

2021-07-10 09:34:30 字數 1398 閱讀 9016

氣泡排序

bubble sort

·······相鄰元素,交換排序

它重複地走訪過要排序的數列,一次比較兩個相鄰元素,如果他們的順序錯誤就把他們交換過來。

走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

冒泡演算法原理:

--------------------------------------------

氣泡排序演算法的運作如下:(從後往前)

1)比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3)針對所有的元素重複以上的步驟,除了最後乙個。

4)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

冒泡演算法穩定性

·····冒泡是一種穩定排序演算法

--------------------------------------------

氣泡排序就是把小的元素往前調或者把大的元素往後調。

比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。

所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的;

--------------------------------------------

1)正序:o(n)

正序的,一趟掃瞄即可完成排序。所需的關鍵字比較次數c和記錄移動次數m均達到最小值.c = n-1,m = 0;  

所以,氣泡排序最好的時間複雜度為o(n)。

2)反序:o(n^2)

反序的,需要進行 (n-1) 趟排序。每趟排序要進行 (n -i)   次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。

在這種情況下,比較和移動次數均達到最大值:

c = n(n-1) / 2 = o(n^2)

m = 3n(n-1)/2 = o(n^2)

氣泡排序的最壞時間複雜度為o(n^2)。

綜上,因此氣泡排序總的平均時間複雜度為 o(n^2)。

// 演算法實現

演算法實現(改進)

····加入了判斷標誌位bchange

另一種寫法:

001 排序演算法 氣泡排序

對於基礎的說明可以參看 001 資料結構與演算法基本概念 002 資料結構之演算法的時間複雜度和空間複雜度 氣泡排序 bubble sort 又被稱為氣泡排序或泡沫排序。它是一種較簡單的排序演算法。規則 每次比較兩個相鄰的元素,將較大的元素交換至右端。排序方法 時間複雜度 平均 時間複雜度 最壞 時...

氣泡排序 排序 氣泡排序

既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...

氣泡排序 氣泡排序法

冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個專案進行掃瞄,比較相領兩個專案的大小,若發現違背大小次序則進行互換,由此可以使n個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...