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)

五、下篇预告

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


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

相关推荐
qq_508576091 小时前
人性机器人部分 算法
算法·机器人
Polevne1 小时前
C# GRPC 一元与双向流
linux·算法·c#
huang5791471 小时前
复杂网络中的最短路径搜索算法性能分析3
算法
找方案1 小时前
AI+气象预报:华为盘古大模型如何让天气预报精准到街区
人工智能·算法·机器学习
Yingye Zhu(HPXXZYY)2 小时前
洛谷B4337 [中山市赛 2023] 简单数学题
c++·算法
郝学胜-神的一滴2 小时前
C++11 工程级应用 12:编译期类型魔法,干掉重复与臃肿的代码
开发语言·数据结构·c++·软件工程·visual studio
kyle~2 小时前
数据结构---红黑树
数据结构
pen-ai2 小时前
【优化方法】为什么梯度是最陡峭的方向?
人工智能·算法·机器学习·最小二乘法
个 人 练 习 生2 小时前
数据结构:排序算法详解
c语言·数据结构·经验分享·学习·算法·排序算法