【排序】冒泡排序 Swift版本

版權聲明:本文爲 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(1)。spa

時間複雜度:排序算法包含雙層嵌套循環,故爲 O(n^2)。code

相關文章
相關標籤/搜索