选择排序的原理:
每次从余下的数中找最小的,并排到余下的数的最开的头。
<代码>包主要 进口“fmt” 函数main () { 数字:=int [] {6、2、7、5、8、9} SelectSort(数字) fmt.Println(数字) } func SelectSort(值int []) { 长度:=len(值) 如果长度& lt;=1 { 返回 } 我:=0;我& lt;长度;我+ + { 分钟:=i//初始的最小值位置从0开始,依次向右//从我右侧的所有元素中找出当前最小值所在的下标 j:=- 1长度;j比;我;j - { 如果值[j] & lt;值(最小值){ min=j } }//fmt。Printf("我:% d分钟:% d \ n”,我,min)//把每次找出来的最小值与之前的最小值做交换 值[我],值(最小值)=值(最小值),值[我]//fmt.Println(值) } } 代码>
更容易理解的版本
<代码>包主要 进口“fmt” 函数main () { 加勒比海盗:=int [] {9、5、4、6、7、2、1} 拉尔夫-舒马赫:=SelectSort (arr) fmt.Println (rs) }//找到集合中最小的数的下标 func findSmallest int (arr int []) { 分钟:=arr [0] idx:=0 关键值:=范围arr { 如果价值& lt;分钟{ min=值 idx=关键 } } 返回idx }//选择排序 func SelectSort (arr int [] [] int) { var结果int [] 长度:=len (arr) 我:=0;我& lt;长度;我+ + { smallestIdx:=findSmallest (arr)//每次循环都找到当前数组中最小的加入到结果集中 结果=append(因此,arr [smallestIdx]) arr=append (arr [: smallestIdx], arr [smallestIdx + 1:]…)//从切片中移除指定下标的元素 } 返回结果 } 代码>