golang选择排序算法

  

选择排序的原理:

  

每次从余下的数中找最小的,并排到余下的数的最开的头。

  
 <代码>包主要
  
  进口“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:]…)//从切片中移除指定下标的元素
  }
  返回结果
  }
   

golang选择排序算法