选择排序的基本思想:
第一次从R[0]~R[n-1]中选取最小值, 与R[0]交换,第二次从R[1]~R[n-1]中选取最小值, 与R[1]交换…
第i次c从R[i-1]~R[n-1]中选取最小值… 第n-1次从R[n-2]~R[n-1]中选取最小值, 与R[n-2]交换,总共通过
n-1次交换得到一个按排序码从小到大的有序排列
代码实现:
package main
import (
"fmt"
)
func SelectSort(arr *[5]int) {
//1 假设arr[0]最大值
for j := 0; j < len(arr) - 1; j++ {
max := arr[j]
maxIndex := j
//2.遍历后面1----【len[arr]-1】比较
for i := j + 1; i < len(arr); i++ {
if max < arr[i] {
max = arr[i]
maxIndex = i
}
}
//交换
if maxIndex != j {
arr[j], arr[maxIndex] = arr[maxIndex], arr[j]
}
fmt.Printf("第%d交换 %v\n", j, *arr)
}
}
func main() {
//定义一个数组,从小到大
arr := [5]int{10, 34, 19, 100, 80}
fmt.Println(arr)
SelectSort(&arr)
fmt.Println("main函数")
fmt.Println(arr)
}