06.冒泡排序

一、 常规冒泡

func bubbleSortA(nums: [Int]) -> [Int] {
    var nums = nums
    let count = nums.count
    
    for i in 0..<count {
        print("<")
        for j in (i + 1)..<count {
            if nums[i] > nums[j] {
                nums.swapAt(i, j)
            }
            print(nums)
        }
        print(">\n")
    }
    
    return nums
}

二、 外层优化

当发现在某一趟排序中没有发生交换,则说明排序已经完成,所以可以在此趟排序后结束排序,在每趟排序前设置flag,当其未发生变化时,终止算法

三、 内层优化

在每趟排序中,右面的许多元素已经是有序的结果了,可算法还是进行后面数值的排序,因此进行第二次优化

四、 对比

输出:

Last updated

Was this helpful?