go选择排序算法的思路和demo

原创
2021/07/12 23:54
阅读数 60

go选择排序算法

平均时间复杂度:O(n²)
思路:

  1. 第一次假设:第一个数是最小的,依次和后面的数比较,如果后面的数小于这个数,就把这个数交换,如下列所示:
arr := []int{5, 6, 1, 4, 5, 7, 2, 3, 9}
	minPos := 0
	for j := 1; j < len(arr); j++ {
		if arr[j] < arr[minPos] {
			arr[j], arr[minPos] = arr[minPos], arr[j]
		}
	}
fmt.Println(arr)
  1. 上面第一次遍历把最小的数找出来并交换了,那么,可以在外面加一个循环,把剩下的数组依次找出来,就OK了,

进一步的代码如下:

arr := []int{5, 6, 1, 4, 8, 7, 2, 3, 9}
	for i := 0; i < len(arr); i++ {
		minPos := i
		for j := i + 1; j < len(arr); j++ {
			if arr[j] < arr[minPos] {
				arr[j], arr[minPos] = arr[minPos], arr[j]
			}
		}
	}

最后,我们再做一些边际化的处理,最终如下:

arr := []int{5, 6, 1, 4, 8, 7, 2, 3, 9}
	length := len(arr)
	for i := 0; i < length-1; i++ {
		minPos := i
		for j := i + 1; j < length; j++ {
			if arr[j] < arr[minPos] {
				arr[j], arr[minPos] = arr[minPos], arr[j]
			}
		}
	}

	fmt.Println(arr)
展开阅读全文
go
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部