算法思想
选择排序提高了冒泡排序的性能,它每遍历一次列表只交换一次数据,即进行一次遍历时找 到最大的项,完成遍历后,再把它换到正确的位置。和冒泡排序一样,第一次遍历后,最大的数 据项就已归位,第二次遍历使次大项归位。这个过程持续进行,一共需要 n-1 次遍历来排好 n 个数 据,因为最后一个数据必须在第 n-1 次遍历之后才能归位。
func SelectionSort(arr []int) {
n := len(arr)
for i := 0; i < n; i++ {
// 里面循环找到最小元素的坐标
minIndex := i
// 前面排序好的,不用管,所以从i+1开始
for j := i + 1; j < n; j++ {
// 如果比第一个坐标小,就换位置
if arr[j] < arr[minIndex] {
minIndex = j
}
}
// 交换数据
arr[i], arr[minIndex] = arr[minIndex], arr[i]
}
fmt.Println(arr) // [1 2 3 4 5]
}
func main() {
SelectionSort([]int{5, 2, 3, 1, 4})
}
有疑问加站长微信联系(非本文作者)