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

具体实现如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main

import "fmt"

func SelectSort(data []int) {
	length := len(data)
	for i := 0; i < length; i++ {
		tmp := data[i]
		flag := i
		for j := i + 1; j < length; j++ {
			if data[j] < tmp {
				tmp = data[j]
				flag = j
			}
		}

		if flag != i {
			data[flag] = data[i]
			data[i] = tmp
		}
		fmt.Println(data) //为了看具体排序的过程

	}
}

func main() {
	data := []int{44, 38, 65, 97, 76, 14, 27, 48}
	SelectSort(data)
	fmt.Println(data)
}

输出结果如下:

1
2
3
4
5
6
7
8
9
[14 38 65 97 76 44 27 48]
[14 27 65 97 76 44 38 48]
[14 27 38 97 76 44 65 48]
[14 27 38 44 76 97 65 48]
[14 27 38 44 48 97 65 76]
[14 27 38 44 48 65 97 76]
[14 27 38 44 48 65 76 97]
[14 27 38 44 48 65 76 97]
[14 27 38 44 48 65 76 97]