插入排序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]; // 插入正确位置
    }
}
相关推荐
WHOVENLY12 分钟前
【javaScript】- 作用域[[scope]]
前端·javascript
爱笑的眼睛1112 分钟前
超越`cross_val_score`:深入剖析Scikit-learn交叉验证API的设计哲学与高阶实践
java·人工智能·python·ai
来杯三花豆奶17 分钟前
Vue3 Pinia 从入门到精通
前端·javascript·vue.js
L0CK18 分钟前
三种依赖注入详解
java
syt_101320 分钟前
设计模式之-工厂模式
javascript·单例模式·设计模式
业精于勤的牙24 分钟前
三角形最小路径和(二)
算法
风筝在晴天搁浅26 分钟前
hot100 239.滑动窗口最大值
数据结构·算法·leetcode
夏乌_Wx37 分钟前
练题100天——DAY31:相对名次+数组拆分+重塑矩阵
数据结构·算法
LYFlied38 分钟前
【算法解题模板】-解二叉树相关算法题的技巧
前端·数据结构·算法·leetcode
shoubepatien40 分钟前
JAVA -- 07
java·后端·intellij-idea