golang选择排序

35 阅读1分钟
func main() {

	var slice = []int{1, 4, 6, 3, 2, 6, 8, 93, 2, 43}
	fmt.Println(slice)
	selectionSort(slice)
	fmt.Println(slice)
}

// 选择排序 - 时间复杂度 O(n的平方)
func selectionSort(slice []int) {
	if slice == nil || len(slice) < 2 {
		return
	}
	n := len(slice)
	for i := 0; i < n-1; i++ {
		min := i
		for j := i + 1; j < n; j++ {
			if slice[min] > slice[j] {
				min = j
			}
		}
		if i != min {
			// 交换
			slice[i], slice[min] = slice[min], slice[i]
		}
	}
}