题目描述
伪代码
代码展示
//插入排序数,请自己根据例程修改
#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
后的数组仍然保持有序,并将结果输出到标准输出。这是插入排序算法的基本思路,它在已排序数据上的插入操作是其关键特点。