Skip to content

Latest commit

 

History

History
103 lines (62 loc) · 3.62 KB

冒泡排序.md

File metadata and controls

103 lines (62 loc) · 3.62 KB

冒泡排序对比两个元素的结果,之后根据大小交换位置的一种排序方法。

冒泡排序的图解

image-20200326111633108

第一次冒泡排序

8和3对比,8大于3交换位置

image-20200326111729817

image-20200326111754527

8和6对比,8大于6,交换位置

image-20200326111855780

image-20200326111919801

8和12对比,小于12,则位置不变

image-20200326111952714

image-20200326111919801

12和1对比,大于1,交换位置

image-20200326112047807

image-20200326112111462

第二次冒泡排序

3和6对比,小于6,位置不变

image-20200326112153845

image-20200326112111462

6和8对比,小于8,则位置不变

image-20200326112249577

image-20200326112111462

8和1对比,大于1,则交换位置

image-20200326112331744

image-20200326112358661

第三次冒泡排序

3和6对比,小于6,位置不变

image-20200326112450701

image-20200326112504459

6和1对比,大于1,交换位置

image-20200326112534010

image-20200326112556953

第四次冒泡排序

3和1对比,大于1,交换位置

image-20200326112633072

image-20200326112658086

剩余一个元素排序完毕

示例代码

class Solution {
    func bubble(_ numbers:inout [Int]) {
        guard numbers.count > 1 else {
            return
        }
        var count = numbers.count
        while count > 1 {
            for i in 0 ..< (count - 1) {
                let j = i + 1
                let n1 = numbers[i]
                let n2 = numbers[j]
                if n2 < n1 {
                    numbers[i] = n2
                    numbers[j] = n1
                }
                print(numbers)
            }
            count -= 1
        }
    }
}