问题描述:
已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
样例输入:
1 7 8 17 23 24 59 62 101
50
样例输出:
1
7
8
17
23
24
50
59
62
101
问题分析:
输入数组已经有序的情况下,只需使用单独的 while
循环来找到插入位置,这样能够高效地将新元素插入到正确的位置,并保持数组的有序性。。此外,需要注意数组的大小变为10,而不是9,因为需要为新插入的元素腾出位置。
代码实现:
#include <stdio.h>
int main() {
int a[10];
// 输入已正序排好的9个元素的数组
for (int i = 0; i < 9; i++) {
scanf("%d", &a[i]);
}
int n;
scanf("%d", &n);
int i = 8;
// 找到插入位置
while (i >= 0 && n < a[i]) {
a[i + 1] = a[i];
i--;
}
// 插入新元素
a[i + 1] = n;
// 输出结果
for (int k = 0; k < 10; k++) {
printf("%d\n", a[k]);
}
return 0;
}