Swift

来源:互联网 发布:华为交换机端口模式 编辑:程序博客网 时间:2024/05/21 22:16

思想

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

步骤

  1. 找到第一小(大)的元素,放在第一个位置
  2. 找到从第二个元素到末尾的元素中第二下(大)的元素,放入第二个位置
  3. 以此类推

代码

import Foundation//选择排序var unsortedList : [Int] = []//排序20个 0-99的随机整数for i in 0..<20 {    unsortedList.append(Int(arc4random_uniform(UInt32(100))))}print("原始数组 : \(unsortedList)\n")//统计一下排序的次数var sortCount : Int = 0var sortedList = selectSort(&unsortedList)print("\n排序后数组 : \(sortedList) \n 次数:\(sortCount)")/// 选择排序算法////// - Parameter list: 待排数组/// - Returns: 排序完毕的数组private func selectSort(_ list : inout[Int]) -> [Int]{    //记录最小值    var minPosition = 0    //外层遍历所有元素    for i in 0..<list.count {        minPosition = i        //找出剩下中最小数的位置        for j in (i+1)..<list.count {            if list[j] < list[minPosition] {                minPosition = j            }        }        //交换i 和 最小元素的位置        if i != minPosition {            swap(&list[i], &list[minPosition])            sortCount += 1            print("第\(sortCount)次交换后的结果的为\(list)")        }    }    return list}

结果

这里写图片描述

特性

  • 时间复杂度 : O(n^2) == n的平方
  • 稳定性 : 不稳定

其他

新blog地址 www.livefor.cn

原创粉丝点击