介紹氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足大小關係要求。如果不滿足就讓他倆互換。一次冒泡會讓至少乙個元素移動到它應該在的位置,重複 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個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...