插入排序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]; // 插入正确位置
    }
}
相关推荐
挠头猴子5 分钟前
c++中常用的运算符优先级
java·开发语言·c++
阿里嘎多哈基米12 分钟前
速通Hot100-Day04——哈希
数据结构·算法·leetcode·哈希算法·散列表
清空mega19 分钟前
第3章:JSP 基础语法——<% %>、<%= %>、<%! %> 到底怎么用
java·开发语言
流光3321 分钟前
一行命令加密 Spring Boot 项目,零代码侵入
java
程序员鱼皮23 分钟前
【后端必看】什么是 Elasticsearch?都要学什么?
java·数据库·程序员·编程·后端开发
Full Stack Developme25 分钟前
Java 反射原理及应用
java·开发语言·数据库
飞天狗11127 分钟前
最短路算法
算法
myloveasuka35 分钟前
权限修饰符&代码块
java
汉克老师39 分钟前
GESPC++考试五级语法知识(二、埃氏筛与线性筛)课后习题
算法·线性筛·素数·gesp5级·gesp五级·埃氏筛·筛法
柒.梧.42 分钟前
Java集合核心知识点深度解析:数组与集合区别、ArrayList原理及线程安全问题
java·开发语言·python