(9)氣泡排序

2021-09-27 09:20:33 字數 685 閱讀 5471

介紹氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足大小關係要求。如果不滿足就讓他倆互換。一次冒泡會讓至少乙個元素移動到它應該在的位置,重複 n 次,就完成了 n 個資料的排序工作。

時間複雜度等

1.氣泡排序是原地排序演算法嗎?

冒泡的過程只涉及相鄰資料的交換操作,只需要常量級的臨時空間,所以它的空間複雜度為 o(1),是乙個原地排序演算法。

2.氣泡排序是穩定的排序演算法嗎?

在氣泡排序中,只有交換才可以改變兩個元素的前後順序。為了保證氣泡排序演算法的穩定性,當有相鄰的兩個元素大小相等的時候,不做交換,相同大小的資料在排序前後不會改變順序,所以氣泡排序是穩定的排序演算法。

3.氣泡排序的時間複雜度是多少?

最好情況時間複雜度是 o(n),最壞情況時間複雜度為 o(n2),平均情況下的時間複雜度就是 o(n2)。

優化當某次冒泡操作已經沒有資料交換時,說明已經達到安全有序,不用再繼續執行後續的冒泡操作。

**

// 氣泡排序,a 表示陣列,n 表示陣列大小

public

void

bubblesort

(int

a,int n)}if

(!flag)

break

;// 沒有資料交換,提前退出

}}

9 氣泡排序 效能改進

通過監測每趟比對是否發生過交換,可以提前確定排序是否完成 如果某趟比對沒有發生任何交換,說明列表已經排好序,可以提前結束演算法 def shortbubblesort alist exchanges true passnum len alist 1 while passnum 0 and excha...

氣泡排序 排序 氣泡排序

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

氣泡排序 氣泡排序法

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