🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
选择排序 思路分析:在要排序的切片中,选出最小的一个元素与第一个位置的元素交换。然后在剩下的元素当中再找最小的与第二个位置的元素交换,如此循环到倒数第二个元素和最后一个元素比较为止。 代码实现: ~~~ package main import ( "fmt" ) var sli = []int{1, 43, 54, 62, 21, 66, 32, 78, 36, 76, 39} func selectSort(sli []int) []int { //双重循环完成,外层控制轮数,内层控制比较次数 len := len(sli) for i := 0; i < len-1; i++ { //先假设最小的值的位置 k := i for j := i + 1; j < len; j++ { //sli[k] 是当前已知的最小值 if sli[k] > sli[j] { //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。 k = j } } //已经确定了当前的最小值的位置,保存到 k 中。如果发现最小值的位置与当前假设的位置 i 不同,则位置互换即可。 if k != i { sli[k], sli[i] = sli[i], sli[k] } } return sli } func main() { res := selectSort(sli) fmt.Println(res) } ~~~