随笔记录,选择排序,从小到大排序,假设第一个为排序好的最小的数据,接着从第二个元素开始找出最小的数据的小标,找到后并交换完成第一次操作。接下来遍历处理全部数据即可。
arr := []int{15, 20, 10, 30, 50, 18, 5, 45}
fmt.Println("origin", arr)
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]
}