原理解析:
引自维基百科选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
问题描述:
把数组 [61,5,33,44,22] 进行从小到大进行排序
步骤如下:
- 遍历数组,找到最小的元素,将其置于数组起始位置。
- 从上次最小元素存放的后一个元素开始遍历至数组尾,将最小的元素置于开始处。
- 重复上述过程,直到元素排序完毕。
代码:
/*
每一次从待排序的数据元素中选出最小(或最大)的一个元素,
存放在系列的起始位置,然后,在从剩余末排序元素中继续寻
找最小(或最大)的一个元素。然后放到已排序序列的末尾,依次
类推,直到全部待排序的数据元素排完。选择排序是最不稳定的排序
*/
func p_selectSort(array: inout [Int]) -> [Int] {
guard array.count > 1 else {
return array
}
for i in 0..<(array.count - 1) {
var min = i // 有序区的最后一个位置
for j in (i + 1)...(array.count - 1) {//注意边界,是遍历到最后一个
if array[min] > array[j] {
min = j;
}
}
if i != min { //防止相同位置交换操作
array.swapAt(min, i)
}
}
return array
}
测试:
@objc func selectSort() {
var list = [61,5,33,44,22]
let result = p_selectSort(array: &list)
print(result)
}
结果
[5, 22, 33, 44, 61]