【算法竞赛宝典】插入排序
- 题目描述
- 伪代码
- 代码展示
- 代码讲解
题目描述

伪代码

代码展示
//插入排序数,请自己根据例程修改
#include <iostream>
using namespace std;
int main() {
int a[11] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
int temp1, temp2, number, end, i, j;
cin >> number;
if (number > a[9])
a[10] = number;
else {
for (i = 0; i < 10; i++)//从左往右扫描
{
if (a[i] > number)//找到比插入数大的数时
{
temp1 = a[i];//将该数先暂存到temp1
a[i] = number;//把插入数插入
for (j = i + 1; j < 11; j++)//后面的数依次后移
{
temp2 = a[j];//后移时,先将a[j]的值暂存到temp2
a[j] = temp1;//插入数
temp1 = temp2;//temp2的值存到temp1,继续下一次的插入
}
break;
}
}
}
for (i = 0; i < 11; i++)
cout << a[i] << ' ';
return 0;
}
代码讲解
这段代码实现了插入排序算法,将一个数字插入已排序的数组中并保持数组的有序性。以下是代码的关键思路和步骤:
-
首先,定义一个已排序的数组
a,其中包含了初始的已排序元素。 -
从标准输入中读取一个新的数字
number,这是要插入到已排序数组中的数字。 -
首先,检查
number是否大于已排序数组中的最大值a[9]。如果number大于最大值,则直接将其放在数组的最后一位a[10],因为它比已排序数组中的所有元素都大,不需要进行进一步的比较。 -
如果
number不大于最大值,则需要找到适当的位置将其插入已排序数组中。这通过以下方式实现:- 使用一个循环遍历已排序数组
a,从左向右扫描。 - 当找到一个比
number大的元素a[i]时,将a[i]暂存到temp1。 - 将
number放入a[i]的位置,然后开始后面的数依次后移,以为插入number腾出位置。 - 在插入
number后,循环结束。
- 使用一个循环遍历已排序数组
-
最后,输出排序后的数组
a,包括新插入的元素。
这段代码会确保插入 number 后的数组仍然保持有序,并将结果输出到标准输出。这是插入排序算法的基本思路,它在已排序数据上的插入操作是其关键特点。




![[贪心] 拼接最小数](https://img-blog.csdnimg.cn/ab666d684033472b9bd64d2d5ef84bf1.png)











![[SpringBoot3]博客管理系统(源码放评论区了)](https://img-blog.csdnimg.cn/d27e6193a7954c6cac0034017445080c.png)

![华为云云服务器评测 [Vue3 博物馆管理系统] 使用Vue3、Element-plus菜单组件构建轮播图](https://img-blog.csdnimg.cn/6af8ec3d5f5b4eaaa7ddff2cada95141.gif)
