排序算法 - 插入(Insertion Sort)

插入排序

插入排序 (Insertion Sort) 是通过将未排序元素插入已排序序列合适位置的排序算法。因排序过程是通过插入的方式实现,所以被称为 插入排序

1、算法描述

n 个记录 (0n) 升序排列:

  1. 从未被排序的第 1 个元素 i 开始,数组第 1 个元素认为已被排序;
  2. 从已排序元素末尾开始向前扫描,依次与 i 对比;
  3. 若该元素大于 i,将该元素后移 1 位;
  4. 重复步骤 3.,直到已排序元素中大于 i 的元素都已后移;
  5. 将元素 i 插入空出来的位置;
  6. 重复上述步骤。

2、Gif 演示

bubble.gif

3、代码实现

- Golang
package sort

func InsertionInt(arr []int, desc bool) []int {
    // 开始插入排序:
    for i := 1; i < len(arr); i++ {
        key := arr[i]
        j := i - 1
        // 将比 key 大/小的元素往后移一位
        for j >= 0 && (!desc && arr[j] > key || desc && arr[j] < key) {
            arr[j+1] = arr[j]
            j--
        }
        // 将 key 插入腾出来的空位
        arr[j+1] = key
    }
    return arr
}

参考文献

十大经典排序算法(动图演示) - 一像素 - 博客园 (cnblogs.com)

posted @   Icaurs  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示