Swift - 选择排序算法
2017-09-15 17:54
190 查看
思想
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。步骤
找到第一小(大)的元素,放在第一个位置找到从第二个元素到末尾的元素中第二下(大)的元素,放入第二个位置
以此类推
代码
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 = 0 var 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相关文章推荐
- 排序算法-选择排序
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- 排序算法之一 选择排序
- Swift-iOS常用控件(UISegmentedControl分段选择)
- 排序算法之选择、插入、冒泡、快速
- 排序算法(二)------选择排序
- 排序算法总结之选择排序 Selection Sort
- PHP四种基础排序算法--冒泡,直接插入,快速和选择排序
- Swift类型选择(Type Casting)
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法(二):选择排序(直接选择排序、堆排序)
- swift中几种排序算法原理的UI动态实现
- [排序算法]:Java实现选择排序和插入排序
- UIImagePickerController实现拍照录像或者选取选择图片和影像(Swift)
- 排序算法之“选择排序-冒泡排序-插入排序”
- 排序算法总结(二)-------选择,堆,冒泡,快速,归并排序(java实现)
- c语言中的几种排序算法——冒泡排序、快速排序、插入排序、选择排序
- 8种排序算法--直接选择排序
- 各排序算法总结(简单选择,冒泡,快速,希尔排序,堆排序)