本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7
题解:
#include <stdio.h>
int main()
{
int n, x;
scanf("%d", &n);
int arr[10];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &x);
//利用下面的循环就可以找到我们应该插入在哪
int insert_pos = 0;
while (insert_pos < n && arr[insert_pos] < x) {
insert_pos++;
}
//这个时候只是找到了该在哪里插入,但是并没有插入,那么我们先把后面的数据都向后挪动一位
for (int i = n; i > insert_pos; i--) {
arr[i] = arr[i - 1];
}
//再把要插入的数据赋值到相应的位置
arr[insert_pos] = x;
n++;
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}