插入排序C语言版

📌 插入排序(Insertion Sort)

🔍 核心思想:
将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加 1 的有序表。

🎮 生活比喻:就像我们整理扑克牌一样,每次把一张新牌插到已排序的手牌中合适的位置。

⏱ 时间复杂度:
情况 时间复杂度
最坏情况 O(n²)
最好情况(已有序) O(n)
平均情况 O(n²)
🧠 稳定性:✅ 稳定排序
💻 实现代码(C语言):

cs 复制代码
void InsertionSort(SorList *L) {
    int i, j;
    keyType k;

    for (i = 2; i <= L->length; i++) {
        L->data[0] = L->data[i]; // 保存当前元素到哨兵位置
        j = i - 1;

        while (j >= 1 && L->data[j] > L->data[0]) {
            L->data[j + 1] = L->data[j];
            j--;
        }

        L->data[j + 1] = L->data[0]; // 插入正确位置
    }
}
相关推荐
江城开朗的豌豆1 分钟前
前端路由暗战:React与Vue的导航哲学对决
前端·javascript·react.js
先知后行。3 分钟前
线程的创建.销毁
开发语言·c++·算法
鹏多多3 分钟前
Vue移动端开发的适配方案与性能优化技巧
前端·javascript·vue.js
鱼嘻7 分钟前
西嘎嘎学习 - C++ 继承 - Day 10
开发语言·c++·学习·算法
王琦031812 分钟前
Python 0909
前端·javascript·python
孤廖13 分钟前
从 “模板” 到 “场景”,用 C++ 磨透拓扑排序的实战逻辑
开发语言·c++·程序人生·算法·贪心算法·动态规划·学习方法
Funcy24 分钟前
XxlJob 源码分析04:admin与executor通讯
java
托比-马奎尔28 分钟前
初识SpringBoot
java·spring boot·后端
前端小巷子32 分钟前
JS 打造仿腾讯影视轮播导航
前端·javascript·面试
前行的小黑炭35 分钟前
Android :如何提升代码的扩展性,方便复制到其他项目不会粘合太多逻辑,增强你的实战经验。
android·java·kotlin