swift 冒泡排序

作者: sakuragi | 来源:发表于2016-05-17 21:25 被阅读889次

    冒泡排序原理

    • 1.对需要排序的数据,俩俩进行比较,小的放前面,大的放后面

    • 2.依次对每一对相邻的数据作步骤1的工作,当排序到最后一个元素的时候,我们能保证这个数据是最大。

    • 3.针对所有的元素重复以上的步骤,除了最后一个(这里为什么需要针对除了最后一个元素的全部元素做一次呢,因为最后一个元素已经是最大的不需要排序了,同时,由于元素的交换,交换上来的元素的大小不一定比前面的元素的大,所以需要再做一次)。

    • 4持续对越来越少的元素重复3的步骤,直到没有任何一对元素需要比较。

    时间复杂度

    • 我们一般谈最坏时间复制度

    n(n-1)/2 = O(n²)

    算法稳定性

    • 相同元素的前后顺序并没有改变,所以是一种稳定排序算法

    swfit代码

    import UIKit
    import Foundation
    
    var array  = [Int](count:20,repeatedValue: 0)
    
    for index in 0..<20 {
        array[index] = Int(arc4random_uniform(20)) + 1
    }
    print("排序前的值")
    print(array)
    for item in array
    {
        var ii = item
        print(ii)
    }
    
    for i in 0 ..< array.count {
        for j in 0 ..< array.count - 1 - i {
            if array[j] > array[j+1] {
                var  temp = array[j+1]
                array[j+1] = array[j]
                array[j] = temp
            }
        }
    }
    print("排序后的值")
    print(array)
    for item in array
    {
        var ii = item
        print(ii)
    }
    

    值变化图

    在playground中我们可以看见值变化情况

    排序前.png
    第一次两两比较完.png

    此时最大的数已经到了最后,后面就不需要比较了

    第二次两两比较完..png

    此时第二大的数已经到了倒数第二位,后面就不需要比较了

    排序完成.png

    相关文章

      网友评论

        本文标题:swift 冒泡排序

        本文链接:https://www.haomeiwen.com/subject/gaiirttx.html