白话选择排序
核心原理找最小游戏。开始假设第1个最小从剩余数字找出最小然后和第1个数交换位置从剩余数字中找出最小再和第2个数交换位置重复这个过程直到所有数都排好序。通俗步骤假设第1个数最小从剩余数字中找出最小和第1个数交换位置从除了第1个的数字中找出最小和第2个数交换位置从除了第1、2个的数字中找出最小和第3个数交换位置重复过程举例演示 [3,1,4,2]第一轮假设3最小142依次比较找出最小11和3交换 - [1,3,4,2]第二轮342依次比较找出最小22和3交换 - [1,2,4,3]第三轮43依次比较找出最小34和3交换 - [1,2,3,4]代码示例packagemainimportfmt// 选择排序 - 升序funcselectionSort(arr[]int){n:len(arr)// 外层循环控制轮次共 n-1 轮fori:0;in-1;i{// 假设当前位置是最小值的索引minIndex:i// 内层循环在 i 后面找最小值forj:i1;jn;j{ifarr[j]arr[minIndex]{minIndexj// 更新最小值索引}}// 找到最小值后和当前 i 位置交换ifminIndex!i{arr[i],arr[minIndex]arr[minIndex],arr[i]}}}funcmain(){arr:[]int{3,1,4,2}fmt.Println(排序前:,arr)// [3,1,4,2]selectionSort(arr)fmt.Println(排序后:,arr)// [1,2,3,4]}