选择排序的一种Go实现
package main
import "fmt"
//选择排序的核心是第n次将数组中后面len(arr) - n个元素的最大或者最小值与第n个元素进行交换
func selectSort(arr *[5]int){
for j := 0; j < len(arr) - 1; j++ { //循环次数为len(arr) - 1
//假设第一个元素的值最大(降序排序)
max := arr[j]
maxIndex := j
//遍历后面的元素进行比较
for i := j + 1; i < len(arr); i++ {
if max < arr[i] {
max = arr[i] //这里不能着急交换值,只需要把最大的给max
maxIndex = i
}
}
//交换值
if maxIndex != j {
arr[j], arr[maxIndex] = arr[maxIndex], arr[j]
}
fmt.Printf("第%d次 %v\n", j+1, *arr)
}
}
func main(){
arr := [5]int{1,3,6,9,8}
selectSort(&arr)
}
输出:
第1次 [9 3 6 1 8]
第2次 [9 8 6 1 3]
第3次 [9 8 6 1 3]
第4次 [9 8 6 3 1]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。