时间复杂度:O(n^2)
- 最好:O(n^2)
- 最坏:O(n^2)
空间复杂度:O(1)
- 只需要一个额外空间用于数据交换
原理
选择排序(Selection Sort)是从待排序的序列中选出最大值(或最小值),交换该元素与待排序序列头部元素,直到所有待排序的数据元素排序完毕为止。
实现
- 第一趟从 len 个元素的数据序列中选出关键字最小(或最大)的元素并放到最前(或最后)位置。
- 下一趟再从 len-1 个元素中选出最小(大)的元素并放到次前(后)位置。
以此类推,经过 len-1 趟完成排序。
// 选择排序,降序排序
func SelectSort(slice []int) []int {
if len(slice) < 2 {
return slice
}
for i := 0; i < len(slice)-1; i++ {
for j := 1 + i; j < len(slice); j++ {
if slice[i] < slice[j] {
slice[i], slice[j] = slice[j], slice[i]
}
}
}
return slice
}