排序算法---插入排序

插入排序的思想

每一趟将一个待排序元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上,直到所有待排序元素元素全部插入为止。

插入排序的代码实现

第一轮:

j = 0 对比值:5 6>5 6,6,4 j = -1 5,6,4

第二轮:

j = 1 对比值:4 5>4 5,6,6

j = 0 对比值:4 5,5,6 j=-1 4,5,6

javascript 复制代码
function insertionSort(arr) {
    var i, j, key;
    for (i = 1; i < arr.length; i++) {
        key = arr[i];
        j = i - 1;
 
        // 将大于key的元素向后移动
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        // 插入key
        arr[j + 1] = key;
    }
    return arr;
}

插入排序的复杂度

时间复杂度

插入排序的平均时间复杂度为O(n^2),其中n是数组的长度。最好情况下是O(n)

空间复杂度:O(1)

相关推荐
皆圥忈1 分钟前
磁盘物理结构与文件系统基础讲解
linux·算法
数据仓库搬砖人6 分钟前
用 LangGraph 从零搭一个客服 Agent:多轮对话 + 工具调用全流程
算法
GuWenyue6 分钟前
告别JS类型坑!Ts为什么在ai时代逐渐成为"第一"语言
前端·算法·typescript
子琦啊7 分钟前
哈希与前缀和
算法·哈希算法
xqqxqxxq8 分钟前
树结构技术学习笔记
数据结构·笔记·学习
Deep-w17 分钟前
【MATLAB】基于离散 LQR 的车辆横向轨迹跟踪控制方法研究
开发语言·算法·matlab
Peter·Pan爱编程22 分钟前
23. 算法库:用算法代替手写循环
c++·人工智能·算法
小欣加油1 小时前
leetcode2161 根据给定数字划分数组
数据结构·c++·算法·leetcode·职场和发展
雨落在了我的手上1 小时前
Java数据结构(四):List的介绍
数据结构
大都督会赢的1 小时前
数据结构(2)--单链表
数据结构