版權聲明:本文爲 muhlenXi 原創文章,未經博主容許不得轉載,若有問題,歡迎指正。git
冒泡排序(Bubble Sort)的排序方法是在每一輪排序過程當中,依次比較相鄰元素的大小,若是順序不知足排序的要求,則交換這兩個元素。這樣每一輪排序結束後,都能將最大的元素的元素放到最後。github
一個 包含 n 個元素的數組在最壞的狀況下,須要進行 n-1 次排序過程,方能使數組中的元素變得有序。算法
算法實現的源代碼能夠在這裏下載:傳送門swift
用 Swift 實現的冒泡排序代碼以下所示:數組
/// 冒泡排序 升序
func bubbleSort(unsortedArray: inout [Int]){
guard unsortedArray.count > 1 else{
return
}
for i in 0 ..< unsortedArray.count-1 {
var exchanged = false
for j in 0 ..< unsortedArray.count-1-i {
if unsortedArray[j] > unsortedArray[j+1] {
unsortedArray.swapAt(j, j+1)
exchanged = true
}
}
if !exchanged {
break
}
}
}
複製代碼
var list = [2, 3, 5, 7, 4, 8, 6 ,10 ,1, 9]
// 將會打印 [2, 3, 5, 7, 4, 8, 6 ,10 ,1, 9]
print(list)
// 進行冒泡排序
bubbleSort(unsortedArray: &list)
// 將會打印 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list)
複製代碼
穩定性
:是穩定算法,由於排序過程當中相鄰會依次比較,不會打亂相同元素的相對位置。ui
空間複雜度
:整個排序過程是在原數組上進行排序的,因此是 O()。spa
時間複雜度
:排序算法包含雙層嵌套循環,故爲 O()。code