命令记不住

登陆

选择排序

选择排序

选择排序是一种简单直观的排序算法,基本原理如下:

对于给定的一组记录,经过第一轮比较后得到最小记录,然后将该记录与第一个记录的位置进行交换,接着对不包括第一个记录一位的其他记录进行第二轮比较,得到最小记录并与第二个记录进行位置交换,重复该过程,直到进行比较的记录只有一个时为止

package main

import "fmt"

func SelectSort(data []int) {
	llen := len(data)
	for i := 0; i < llen; i++ {
		tmp := data[i]
		flag := i

		for j := i + 1; j < llen; j++ {
			if data[j] < tmp {
				tmp = data[j]
				flag = j
			}
		}
		if flag != i {
			data[flag] = data[i]
			data[i] = tmp
			fmt.Printf("排序过程: %v\n", data)
		}
	}
}

func main() {
	data := []int{5, 6, 3, 8, 2, 4, 7, 9, 0}
	SelectSort(data)
	fmt.Println("排序结果如下:")
	fmt.Println(data)
}

每一趟排序结果

[administrator@administrator-dev 20210330]$ go run  00.go 
排序过程: [0 6 3 8 2 4 7 9 5]
排序过程: [0 2 3 8 6 4 7 9 5]
排序过程: [0 2 3 4 6 8 7 9 5]
排序过程: [0 2 3 4 5 8 7 9 6]
排序过程: [0 2 3 4 5 6 7 9 8]
排序过程: [0 2 3 4 5 6 7 8 9]
排序结果如下:
[0 2 3 4 5 6 7 8 9]

推荐阅读