C语言:三大基础排序算法模板 冒泡 / 选择 / 插入)

前言

在 C 语言初学阶段,冒泡排序、选择排序、插入排序 是必须掌握的三大基础排序算法。逻辑简单、代码固定、考试和作业高频必考,本文整理可直接复用的降序通用模板,附带核心思想、完整代码、速记表格,收藏即可直接套用。

一、冒泡排序(Bubble Sort)

核心思想

相邻元素两两比较,若前小后大则交换,大数逐步向前冒泡上浮,每一轮确定一个末尾有序元素。

复制代码
// 数组arr,n个元素,降序排列
void bubbleSort(int arr[], int n) 
{
    int i, j, temp;
    // 共需要 n-1 轮排序
    for (i = 0; i < n - 1; i++) 
    {
        // 每轮减少i次比较,后面已有序不用管
        for (j = 0; j < n - 1 - i; j++) 
        {
            // 前 < 后 就交换,实现降序
            if (arr[j] < arr[j + 1]) 
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

二、选择排序(Selection Sort)

核心思想

每一轮先假设当前位置为最大值下标,向后遍历找到真正最大值下标,再交换到当前位置,依次确定前面有序元素。

复制代码
// 数组arr,n个元素,降序排列
void selectionSort(int arr[], int n) 
{
    int i, j, maxIdx, temp;
    for (i = 0; i < n; i++) 
    {
        maxIdx = i;  // 初始假设当前下标为最大值下标
        // 向后寻找更大值的下标
        for (j = i + 1; j < n; j++) 
        {
            if (arr[j] > arr[maxIdx]) 
            {
                maxIdx = j;
            }
        }
        // 把最大值交换到i位置
        temp = arr[i];
        arr[i] = arr[maxIdx];
        arr[maxIdx] = temp;
    }
}

三、插入排序(Insertion Sort)

核心思想

把数组分成已排序区间未排序区间,逐个取出未排序元素,向前比较,比它小的元素向后挪动,腾出位置后插入。

复制代码
// 数组arr,n个元素,降序排列
void insertionSort(int arr[], int n) 
{
    int i, j, temp;
    // 从第二个元素开始往前插入
    for (i = 1; i < n; i++) 
    {
        temp = arr[i];  // 暂存当前要插入的元素
        j = i - 1;
        // 前面元素比temp小,全部后移
        while (j >= 0 && arr[j] < temp) 
        {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;  // 插入到正确位置
    }
}

四、三大排序核心速记对照表

表格

排序算法 核心动作 关键代码行(降序)
冒泡排序 相邻交换,大数上浮 if (arr[j] < arr[j+1]) 交换
选择排序 选最大值,放至最前 if (arr[j] > arr[maxIdx]) 更新maxIdx
插入排序 取数后移,插入空位 while (j>=0 && arr[j]<temp) 元素后移

五、总结

  1. 三种算法都是简单直观的基础排序,适合初学者理解排序逻辑;
  2. 模板为通用降序版本,只需改判断符号即可转为升序;
  3. 做题、考试、课程设计可直接复制代码使用,无需重复改写;
  4. 记忆重点:记准核心思想 + 关键判断条件,就能默写代码。

如果这篇模板对你有帮助,欢迎点赞 + 收藏 + 关注,后续会持续更新 C 语言入门干货、算法模板与编程技巧,助力你高效备考、快速写代码!

相关推荐
noipp18 小时前
推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦
c语言·数据结构·c++·算法·游戏·洛谷·luogu
冻柠檬飞冰走茶18 小时前
PTA基础编程题目集 7-20 打印九九口诀表(C语言实现)
c语言·开发语言·数据结构·算法
鱼子星_18 小时前
《算 · 法》题目解析篇(1):最近公共祖先问题,线段树,最长回文子序列
c++·算法·动态规划·递归
雾喔18 小时前
算法练习5
算法·代理模式
caishenzhibiao18 小时前
顺势捕猎者副图 同花顺期货通指标
java·c语言·c#
问商十三载18 小时前
RAG 检索召回越多越好?2026 信噪比模型深度解析
人工智能·算法·机器学习
额恩6618 小时前
ResearchPilot 第三阶段总结报告
python·算法
Hi李耶18 小时前
【LeetCode】9-回文数
算法·leetcode·职场和发展
红叶舞18 小时前
基于线段树的数据结构
数据结构·python·算法
chnyi6_ya19 小时前
论文阅读笔记 | The Script is All You Need: 对话到电影级视频生成的 Agentic 框架
论文阅读·笔记