排序算法---插入排序

插入排序的思想

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

插入排序的代码实现

第一轮:

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)

相关推荐
YGGP10 分钟前
【Golang】LeetCode 56. 合并区间
算法·leetcode·职场和发展
_F_y11 分钟前
回文串系列动态规划附马拉车算法原理及实现
算法·动态规划
你怎么知道我是队长18 分钟前
C语言---排序算法12---计数排序法
c语言·算法·排序算法
fu的博客23 分钟前
【数据结构2】带头结点·单向链表实现
数据结构·算法·链表
郝学胜-神的一滴24 分钟前
深入浅出链表:数据结构中的“珍珠项链“
开发语言·数据结构·程序人生·链表
近津薪荼25 分钟前
优选算法——前缀和(6):和可被 K 整除的子数组
c++·算法
lifallen26 分钟前
线性基 (Linear Basis)
数据结构·算法
twilight_46929 分钟前
人工智能数学基础——第二章 高等数学基础
人工智能·算法·机器学习
_OP_CHEN32 分钟前
【算法提高篇】(二)线段树之区间修改:懒标记的核心奥义与实战实现
算法·蓝桥杯·线段树·c/c++·区间查询·acm/icpc·懒标记
啊阿狸不会拉杆32 分钟前
《机器学习导论》第 18 章-增强学习
人工智能·python·学习·算法·机器学习·智能体·增强学习