前言
在 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) 元素后移 |
五、总结
- 三种算法都是简单直观的基础排序,适合初学者理解排序逻辑;
- 模板为通用降序版本,只需改判断符号即可转为升序;
- 做题、考试、课程设计可直接复制代码使用,无需重复改写;
- 记忆重点:记准核心思想 + 关键判断条件,就能默写代码。
如果这篇模板对你有帮助,欢迎点赞 + 收藏 + 关注,后续会持续更新 C 语言入门干货、算法模板与编程技巧,助力你高效备考、快速写代码!