有一以排好序的数组(一维,从小到大),现插入一个元素,保持该数组仍然有序

恩!是C语言!

public static void main(String args[]){
    int[] a = {1,2,3,4,5,6,8,9,10};
    int b = 7;
    int[] c =new int[a.length+1];
    for(int j=0;j<a.length;j++){
        c[j]=a[j];
    }
   
   //从后面开始,如果比倒数第二个数大,那就将新加入的数填在倒数第一的位置,否则倒数第二的数位置后移
    for(int i =c.length;i>=0;i--){
       if(b>c[i-2]){
           c[i-1]=b;
           break;
       }else{
           c[i-1]=c[i-2];
       }
    }
    for(int j = 0;j<c.length;j++){
        System.out.print(c[j]);
    }

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-13
什么语言,c吗?

你等等,编码ing

写好了:

#include<stdio.h>
#define LEN 10 /*用宏定义数组的最大长度*/

/*输出数组a*/
void pr(int a[]){
int i;
for(i=0;i<LEN;i++)printf("%d,",*a++);
printf("\n");
}

/*插入一个元素*/
void insert(int a[],int b){
int i,j;/*定义两个用于for循环的变量*/
for(i=0;i<LEN-1;i++){/*遍历数组*/
if(b>=a[i]&&b<a[i+1]){/*寻找到一个大于或等于插入元素并且下一个位置大于插入元素的数组下标*/
for(j=LEN-1;j>i;j--){a[j]=a[j-1];}/*将插入点后的元素后移一个位置*/
a[i+1]=b;/*将插入元素插入*/
break;/*跳出遍历数组*/
}
}
}

/*入口主函数*/
void main()
{
int a[LEN]={5,6,9,10,22,23};/*定义一个数组并初始化一部分值*/
pr(a);/*显示数组*/
insert(a,12);/*按大小插入一个元数12*/
pr(a);/*显示插入后的数组*/
}

TC 2.0 调试结果:
5 6 9 10 22 23 0 0 0 0
5 6 9 10 12 22 23 0 0 0

感言:好久都没写了,生疏了,唉,不应该啊…
谢谢你给这个机会。。。本回答被提问者和网友采纳