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)
}

results matching ""

    No results matching ""