Go-插入排序

新手,如有错误,请指证,感谢🙏。求轻喷~~

package main

import (
	"fmt"
)
// 插入排序法思路:将要排序的元素插入到已经 假定排序号的数组的指定位置。
// 实现思路:
// * 区分 哪部分是已经排序好的
// * 哪部分是没有排序的
// * 找到其中一个需要排序的元素
// * 这个元素 就是从第二个元素开始,到最后一个元素都是这个需要排序的元素
// * 利用循环就可以标志出来
// * i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了,
// * 间接已经将数组分成了2部分,下标小于当前的(左边的),是排序好的序列

func main() {
	// 定义数据源
	mySlice  := []int{1,43,54,62,21,66,32,78,36,76,39}
	sliceLen := len(mySlice)
	for i:=1; i<sliceLen;i++{
		// 获得当前需要比较的元素值。
		tmp := mySlice[i]
		// 内层循环控制 比较 并 插入
		for j:=i-1;j>=0;j--{
			// mySlice[i] 需要插入的元素
			// mySlice[j] 需要比较的元素
			if tmp < mySlice[j] {
				// 如果插入的元素小,交换位置。将后边的元素与前边的元素互换
				mySlice[j+1] = mySlice[j]
				// 将前面的数设置为当前需要交换的数
				mySlice[j] = tmp
			} else {
				// 由于是已经排序好的,则不需要再次比较。
				break
			}
		}
	}
	fmt.Println(mySlice)
}

 

posted @ 2017-10-25 16:33  雪随冬行  阅读(643)  评论(0编辑  收藏  举报