插入排序(从小到大)
思路:
- 先从第一个位置元素开始,比较它和它之前元素的大小,如果比当前元素小,则把前一个元素的值赋值给当前元素,
- 进行下一轮比较,同样循环,一直比较到0位置元素,或者找到比当前元素小的位置(为什么找到这个位置就可以了,因为插入排序,每次循环的过后,都会把当前内循环内最小的值放到第一位去了,所以找到比这个小的值,说明 当前元素就在这个位置了,不用做比较了,所以插入排序的效率会比选择排序高)
- 退出内循环的时候,需要把当前元素(temp)赋值给退出位置,如果是j=0, 则temp是最小的,如果j > 0 说明找到了位置, 如果内循环没有进行, 则temp则不需要做操作,这里arr[j] = temp 则相当于没有操作(这里其实可以添加一个判断,如果j != i 在进行arr[j] = temp操作)
func insertSort(arr [][]int){
for i := 1; i <len(arr); i++ {
for j := i; j > 0 && temp < arr[j-1]; j-- {