1.1.1. 一、选择排序思想:
选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 R[0]~R[n-1]中选取最小值,与 R[0]交换,第二次从 R[1]~R[n-1]中选取最小值,与 R[1]交换,第三次从 R[2]~R[n-1]中选取最小值,与 R[2]交换,…,第 i 次从 R[i-1]~R[n-1]中选取最小值,与 R[i-1]交换,…, 第 n-1 次从R[n-2]~R[n-1]中选取最小值,与 R[n-2]交换,总共通过 n-1 次,得到一个按排序码从小到大排列的有序序列。如下图:
1.1.2. 二、代码实现如下:
package main
import "fmt"
//从大到小排列
func selectSort(arr *[5]int) {
// len(arr) - 1 最后一个元素不用比较。
for i:=0; i < len(arr) - 1; i++ {
max := arr[i]
maxIndex := i
// 找出最大值
for j := i + 1; j < len(arr); j++ {
if max < arr[j] {
max = arr[j]
maxIndex = j
}
fmt.Println("j=",j)
}
// 交换
if maxIndex != i{
arr[i],arr[maxIndex] = arr[maxIndex],arr[i]
}
}
}
说明:
1、外层循环次数:
len(arr) - 1
最后一个元素不用比较。2、内层循环
j := i + 1
,前面排序好的不用去循环。
- 调用如下:
func main() {
nums := [5]int{23,45,67,1,6}
//排序
selectSort(&nums)
fmt.Println(nums)
}