1,插入排序

1,什么是插入排序?
就是假设手里拿这的是一副有序的牌,然后每次插入一张牌都去调整被改动的顺序
如:1 3 5 中插入2 则 2放在3的位置,3,5都往后挪动就是插入排序

2,程序实现:

package main

import (
    "fmt"
)

func main() {
    // 插入排序
    data := []int{5,2,4,6,1,3}
    insertSortDesc(data)
    fmt.Println(data)
}

// 插入排序 - 升序
func insertSort(data []int)  {

    for j := 1; j< len(data); j++ {
        // 获取当前值
        current := data[j]

        // 前n个都是有序的,现在需要做的是交换
        i := j-1
        for i >= 0 && data[i] > current {
            data[i+1] = data[i]
            i--
        }

        data[i+1] = current
    }

}

// 插入排序 - 降序
func insertSortDesc(data []int)  {

    for j := 1; j< len(data); j++ {
        // 获取当前值
        current := data[j]

        // 前n个都是有序的,现在需要做的是交换
        i := j-1
        for i >= 0 && data[i] < current {
            data[i+1] = data[i]
            i--
        }

        data[i+1] = current
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容