描述
输入n个从小到大有序的整数存入一维数组a[0]~a[n-1]中,将x插入数组中使得数组a[0]~a[n]仍然有序。
输入
第一行1个正整数n,n不超过100。
第二行包括n的整数,从小到大有序,相互间用空格隔开。
第三行1个整数,为待插入的整数x。
输出
将数组a[0]~a[n]中的n+1个有序整数依次输出,相互之间用1个空格隔开,行首行末均没有空格。
输入样例 1?
5
1 3 5 7 9
4
输出样例 1
1 3 4 5 7 9
#include <stdio.h> int main(int argc,char const *aegv[]) { ? ? int n,a[1000]={0},i,x,k,z=0; ? ? scanf("%d",&n); ? ? for(i=0;i<n;i++) ? ? { ? ? ? ? scanf("%d",&a[i]); ? ? } ? ? scanf("%d",&x); ? ? if(n==1) ? ? { ? ? ? ? if(a[0]>x) ? ? ? ? {a[1]=a[0],a[0]=x;} ? ? ? ? else{a[1]=x;} ? ? } ? ? else{
? ? ? ? for(i=1;i<n;i++) ? ? { ? ?if(x<a[0]) ? ? ? ? ? ? {k=0; ? ? ? ? ? ? break;} ? ? ? ? ? ? if(x>a[n-1]) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? k=n; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? if(x<=a[i]&&x>=a[i-1]) ? ? ? ? { ? ? ? ? ? ? k=i ; ? ? ? ? } ? ? } ? ? for(i=n;i>=k;i--) ? ? { ? ? ? ?a[i]=a[i-1];
? ? } ? ? a[k]=x; ? ? }
? ? for(i=0;i<=n;i++) ? ? { ?if(z!=0) ? ? printf(" "); ? ? ? ? printf("%d",a[i]); ? ? ? ? z++; ? ? } } 简单的数组运用插入
|