题目
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式及样例
格式
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
样例
5
1 2 4 5 7
3
输出格式及样例
格式
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
样例
1 2 3 4 5 7
参考代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
int n, x;
scanf("%d", &n);
if (n < 0 || n>9) {
printf("输入不合法!");
exit(0);
}
int* arr = (int*)malloc(sizeof(int)*4);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &x);
int flag=0;
for (int i = 0; i < n; i++) {
if (x < arr[i]) {
//printf("------------");
flag=i;
break;
}
/*else
printf("arr[%d]=%d\n", i, arr[i]);*/
}
int* brr = (int*)malloc(sizeof(int)*4*(n+1));
for (int i = 0; i <= n; i++) {
//printf("flag=%d\n", flag);
if (i < flag) {
brr[i] = arr[i];
//printf("b[%d]=%d ", i, brr[i]);
}
else if (flag == i) {//2
brr[flag] = x;
//printf("b[%d]=%d ", i, brr[i]);
}
else {
brr[i] = arr[i - 1];
//printf("b[%d]=%d ", i, brr[i]);
}
}
for (int i = 0; i <= n; i++) {
printf("%d ", brr[i]);
}
return 0;
}