2021-01-08

问题 F: 有序数组中插入元素

时间限制: 1 Sec  内存限制: 128 MB
提交: 2116  解决: 967
[提交][状态][讨论版]

题目描述

输入n(n<=20),输入n个有序整数(降序或升序)。插入元素e,使新序列仍按原来的排序规则为有序序列。

输入

输入测试次数t

每行测试数据占两行,格式为:

第一行,整数n,后跟n个有序整数

第二行,插入整数e

输出

对每组测试数据,输出插入元素后的有序序列

样例输入

3 5 10 20 30 40 50 23 15 90 80 70 60 50 45 40 35 30 25 20 15 10 5 -10 100 4 80 70 60 50 55

样例输出

10 20 23 30 40 50 100 90 80 70 60 50 45 40 35 30 25 20 15 10 5 -10 80 70 60 55 50

提示

 

 

 

 

 

 

 

#include<stdio.h>
int main()
{
 int a[20]={0},x,i,j,t,n,flag,flag2;
 scanf("%d",&t);
while(t--)
{ flag=0;flag2=0;
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
 scanf("%d",&a[i]);
 }
 scanf("%d",&x);
 for(i=0;i<n;i++)
 if((a[i]>=x&&a[i+1]<=x)||(a[i]<=x&&a[i+1]>=x))
{
 {
 for(j=n+1;j>i+1;j--)//前面的值付给后面 
 a[j]=a[j-1];
 }
 a[i+1]=x;
 for(i=0;i<n+1;i++)
 {
 printf("%d",a[i]);
 if(i<n)printf(" ");
 }flag2=1;
 break;
}
if(!((a[i]>=x&&a[i+1]<=x)||(a[i]<=x&&a[i+1]>=x)))// 没有这个值 
 {
 if(x>=a[0]&&x>=a[n-1])
 if(a[0]<a[n])
 x=a[n+1];
 else
 {
  for(i=n;i>0;i--)
  a[i]=a[i-1];
  a[0]=x;
 } //还要将其放在最后面或最前面 
  
 if(x<=a[0]&&x<=a[n-1])
 if(a[0]>a[n])
 x=a[n+1];
 else
 {
  for(i=n;i>0;i--)
  a[i]=a[i-1];
  a[0]=x;
 } 
  
 
  
 if(flag2==0) for(i=0;i<n+1;i++)
 {
 printf("%d",a[i]);
 if(i<n)printf(" ");
 }
}
 printf("\n");

return 1;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值