命令记不住

登陆

插入排序

插入排序

对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余的记录为无序序列,接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止

package main

import "fmt"

func InsertSort(array []int) {
	if array == nil {
		return
	}
	for i := 1; i < len(array); i++ {
		tmp, j := array[i], i
		if array[j-1] > tmp {
			for j >= 1 && array[j-1] > tmp {
				array[j] = array[j-1]
				j--
				fmt.Printf("排序过程: %v\n", array)
			}
		}
		array[j] = tmp
	}

}
func main() {
	array := []int{7, 3, 17, 40, 99, 67, 0, 5, 1}
	InsertSort(array)
	fmt.Println("排序结果如下:")
	fmt.Println(array)
}

排序过程

[administrator@administrator-dev 20210330]$ go run  01.go 
排序过程: [7 7 17 40 99 67 0 5 1]
排序过程: [3 7 17 40 99 99 0 5 1]
排序过程: [3 7 17 40 67 99 99 5 1]
排序过程: [3 7 17 40 67 67 99 5 1]
排序过程: [3 7 17 40 40 67 99 5 1]
排序过程: [3 7 17 17 40 67 99 5 1]
排序过程: [3 7 7 17 40 67 99 5 1]
排序过程: [3 3 7 17 40 67 99 5 1]
排序过程: [0 3 7 17 40 67 99 99 1]
排序过程: [0 3 7 17 40 67 67 99 1]
排序过程: [0 3 7 17 40 40 67 99 1]
排序过程: [0 3 7 17 17 40 67 99 1]
排序过程: [0 3 7 7 17 40 67 99 1]
排序过程: [0 3 5 7 17 40 67 99 99]
排序过程: [0 3 5 7 17 40 67 67 99]
排序过程: [0 3 5 7 17 40 40 67 99]
排序过程: [0 3 5 7 17 17 40 67 99]
排序过程: [0 3 5 7 7 17 40 67 99]
排序过程: [0 3 5 5 7 17 40 67 99]
排序过程: [0 3 3 5 7 17 40 67 99]
排序结果如下:
[0 1 3 5 7 17 40 67 99]

推荐阅读