进行n-1轮排序,每轮排序找出最小值下标,将第1个未排序元素与最小值交换;
空间复杂度:O(1)
时间复杂度:O()
//选择排序
func selectionSort(nums []int) {
//重复n-1次
// 第1个未排序元素,设置为最小值,保存其下标
// 遍历剩余未排序元素,有比最小元素小的
// 替换最小值元素下标
// 交换最小值元素与第1个未排序元素
for i := 0; i < len(nums)-1; i++ { //排好序的元素放未排序元素最前面
min := i //最小元素下标
for j := i + 1; j < len(nums); j++ { //每次从未排序元素中找最小值
if nums[j] < nums[min] {
min = j //替换最小值下标
}
}
if min != i { //交换最小值与第i个未排序元素
nums[i], nums[min] = nums[min], nums[i]
}
}
}