排序算法---插入排序

插入排序的思想

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

插入排序的代码实现

第一轮:

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)

相关推荐
信奥卷王4 小时前
[GESP202609 六级] 分树规划
算法
夏幻灵4 小时前
LeetCode 21:合并两个有序链表——双指针与哑节点详解
算法·leetcode·链表
徐小黑ACG6 小时前
Golang 基础05 结构体struct
开发语言·算法·golang
码完就睡6 小时前
数据结构——红黑树
数据结构
码爸6 小时前
数据结构详细介绍
数据结构
Navigator_Z6 小时前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
北极有牛7 小时前
cpp学习笔记--常量指针
java·开发语言·算法
GPU实战笔记7 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练
浮链序7 小时前
怎么证明"你这个模型是偷我的"——把蒸馏变成取证工具
算法·安全·llm