go 算法之插入排序算法

package main

import "fmt"
//把切片分成两部分,左边部分是排好序的,右边部分是未排序的
//假定第一个元素是已经排好的区域,然后从未排好序的区域里面最左边选一个和已排好序的区域的最后一个元素依次向前开始比较,
//如果大于已排好序的最后一个元素就退出,否则就互换
func insertSort(list []int) []int {
	//假设索引0对应的第一个元素是排好序的
	for i := 1; i < len(list); i++ {
		//遍历 从未排好序的元素里取一个值
		temp := list[i]
		//已经排好顺序的
		for j := i - 1; j >= 0; j-- {
			if temp < list[j] {
				list[j+1] = list[j]
				list[j] = temp
			} else {
				break
			}
		}
	}
	return list
}

func main() {

	slice := []int{7, 2, 9, 943, 4}
	res := insertSort(slice)
	fmt.Println(res)
}

  

posted on 2022-01-19 22:42  running-fly  阅读(62)  评论(0编辑  收藏  举报

导航