数组插入处理
题目描述
已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
输入格式
第一行,原始数列。 第二行,需要插入的数字。
输出格式
排序后的数列
样例输入
1 7 8 17 23 24 59 62 101
50
样例输出
1
7
8
17
23
24
50
59
62
101
解题思路
该题目有一个取巧的方法,不需要真的把数字插入到数组中,而是找到数组中第一个比它大的数,在其之前将插入数输出就好了。例如:
1、在数组[1,3,5,7,9,11]中插入6;
2、则遍历数组,如果当前数比6小则输出当前数num[i];
3、如果当前数num[k]比6大则先输出6再输出当前数num[k];
4、之后的数按顺序输出即可;
AC代码(C语言)
#include<stdio.h>
int main(){
int num[11];//用来保存输入的数字
int insertNum;//要插入的数
for(int i=0;i<9;i++){
scanf("%d",&num[i]);
}
scanf("%d",&insertNum);
int flag=0;//判断是否已经找到第一个比插入数大的数
for(int i=0;i<9;i++){
if(num[i]>=insertNum&&flag==0){
flag=1;
printf("%d\n",insertNum);
}
printf("%d\n",num[i]);
}
return 0;
}