19-插入排序与希尔排序

C语言数据结构系列:插入排序篇

C语言数据结构系列(十九):插入排序与希尔排序

🎯 本篇目标 :掌握插入排序和希尔排序!

📝 摘要 :本文介绍两种经典的排序算法------插入排序 与希尔排序。插入排序通过将新元素插入到已排序序列的正确位置完成排序,思想类似打扑克牌;希尔排序则是插入排序的改进版,通过分组、逐步缩小间隔的方式提升效率。文章包含两种算法的 C 语言实现、思想讲解及复杂度对比,适合初学者快速掌握。


一、前言

哈喽小伙伴们!👋

今天我们来学习插入排序 和它的改进版希尔排序!


二、插入排序

2.1 思想

💡 像打扑克牌,每次摸到新牌,插入到手牌的正确位置

2.2 代码实现

c 复制代码
void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}

三、希尔排序

3.1 思想

💡 分组插入排序,逐步缩小间隔,最后进行一次插入排序

3.2 代码实现

c 复制代码
void shellSort(int arr[], int n) {
    for (int gap = n / 2; gap > 0; gap /= 2) {
        for (int i = gap; i < n; i++) {
            int temp = arr[i];
            int j;
            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
                arr[j] = arr[j - gap];
            }
            arr[j] = temp;
        }
    }
}

四、复杂度对比

算法 最好 最坏 平均 稳定性
插入 O(n) O(n²) O(n²) ✅
希尔 O(nlogn) O(n²) O(n^1.3) ❌

五、下篇预告

下一篇我们将学习 快速排序------最常用的排序算法!


💡 插入排序在数据基本有序时效率很高!👍

相关推荐
CHEEVEN_QY7 小时前
液冷板热阻计算与流阻优化的实战方法
人工智能·算法·机器学习
CQU_JIAKE7 小时前
10.2【A】
数据结构
C++ 老炮儿的技术栈8 小时前
不一样的数值交换
数据结构·c++·人工智能·算法·c·csdn开发云
hahaha60168 小时前
Shades-of-Gray (SoG) 算法--白平衡算法
人工智能·嵌入式硬件·算法·计算机视觉
青山木9 小时前
Hot 100 --- 编辑距离
java·数据结构·算法·leetcode·动态规划
夊9 小时前
C语言第十一课:指针(五)
算法
小师兄吃牛肉9 小时前
C语言指针进阶全解析
java·c语言·算法
梦帮科技9 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
做运维的阿瑞10 小时前
多表查询基础:INNER JOIN、LEFT JOIN、RIGHT JOIN
数据库·sql·mysql·算法
大侠归来11 小时前
C语言素数判断:从入门到进阶
java·c语言·算法