Go-插入排序

package main

import "fmt"

////       1        9 2 8  7 6  4  5
////       1 9          2 8  7 6  4  5
////       1 2  9           8  7 6  4  5
////       1 2  8  9            7 6  4  5
////       1 2   7  8  9            6  4  5
////       1 2  6 7  8  9              4  5

//1      9         2 8  7 6  4  5
//1 9  9
//1 2  9
//1  19 29    8
// 1  19 29  29
// 1  19 19  29
// 1  8 19  29
func InsertTest(arr []int) []int {
    backup := arr[3]
    j := 3 - 1 //上一个位置循环找到位置插入
    for j >= 0 && backup < arr[j] {
        arr[j+1] = arr[j] //从前往后移动
        j--
    }
    arr[j+1] = backup //插入
    return arr

}

func InsertSort(arr []int) []int {
    length := len(arr) //数组长度
    if length <= 1 {
        return arr //一个元素的数组,直接返回
    } else {
        for i := 1; i < length; i++ { //跳过第一个
            backup := arr[i] //备份插入的数据
            j := i - 1       //上一个位置循环找到位置插入
            for j >= 0 && backup < arr[j] {
                arr[j+1] = arr[j] //从前往后移动
                j--
            }
            arr[j+1] = backup //插入
            fmt.Println(arr)
        }

        return arr

    }
}

func main() {
    arr := []int{1, 19, 29, 8, 3, 7, 4, 6, 5, 10}
    //fmt.Println(InsertTest(arr))
    fmt.Println(InsertSort(arr))

}

 

posted @ 2022-12-15 12:07  爱跑步的乌龟  阅读(14)  评论(0编辑  收藏  举报