go语言实现选择排序,为什么叫选择排序呢?从数组元素中第一个元素开始array[0],和其他元素相比,然后找出第一次元素最小的那个索引,将最小的元素排序到元素第一个位置
package main;
import "fmt";
func main() {
array := []int{5,4,3,21}
res := selectSort(array)
fmt.Println(res)
}
func selectSort(array []int) []int {
n := len(array)
for i:=0;i<n;i++ {
index := i // 假设元素最小
for j:=i+1;j<n-1;j++ {
if (array[index] > array[j+1]) {
index = j+1 // 记录元素最小的索引
}
}
// 将最小的元素排序到左边
array[i],array[index] = array[index],array[i]
//i++,已经将最小的元素排序到最左边,然后在找第二大的元素
}
return array
}
原来老是去被代码,导致一段时间就忘记,其实没有理解算法的核心思想。这样肯定是不行的,就像冒泡,每次冒泡都将最大的冒到最后。
就像选择,在为排序的数据中选择最小的那个,然后和已排序中的元素交换。
有疑问加站长微信联系(非本文作者)