Go语言 算法图解——选择排序

选择排序就是不断地从未排序的元素中选择最大(或者最下)的元素放入已经排好序的元素集合中,直到未排序中仅剩一个元素为止。知识内容参考《算法图解》P25-28.

package main

import (
	"fmt"
	"math"
)

/*
找出切片中最小值的索引,并将其返回
*/
func findSmaller(arr []int) int {
	var min int = 0
	for i := 1; i < len(arr); i++ {
		if arr[min] > arr[i] {
			min = i
		}
	}
	return min

}
func SelectionSort(arr []int) []int {

	var newArr []int
	//最大可能需要找切片长度次数
	for i := 0; i < len(arr); i++ {
		//找出切片最小值的索引
		index := findSmaller(arr)
		//为新的切片添加内容
		newArr = append(newArr, arr[index])
		arr[index] = math.MaxInt64 //可以看成是清除切片中的元素(无穷大值)
	}
	//返回排序好的切片
	return newArr

}

func main() {
	arr := []int{12, 4, 5, 17, 84, 8, 9, 1, 7, 666, 333, 888}
	//fmt.Println(arr)
	fmt.Println(SelectionSort(arr))

}

运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_42117918/article/details/81838041