Swift
来源:互联网 发布:华为交换机端口模式 编辑:程序博客网 时间:2024/05/21 22:16
思想
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
步骤
- 找到第一小(大)的元素,放在第一个位置
- 找到从第二个元素到末尾的元素中第二下(大)的元素,放入第二个位置
- 以此类推
代码
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
阅读全文
0 0
- SWIFT
- swift
- Swift
- Swift
- swift
- Swift
- swift
- Swift
- swift
- swift
- swift
- Swift
- swift
- swift
- Swift
- swift
- swift
- swift ??
- 关于ext最近遇到的坑
- 【caffe实用技巧与bug排查】三步添加新layer及可能出现的bug
- 浅谈android布局UI优化
- 把字符串转换成整数
- Linux多进程和多线程的优缺点
- Swift
- 关于构造函数的默认构造
- 动态获取控件的高度
- 强化学习A3C与UNREAL算法
- JSP + JavaBean + Servlet实现MVC设计模式
- android工程目录结构
- 求算法思路!
- Android安全之非对称加密RSA密钥生成、加密、解密
- Qt通过Component创建对象