已有一个已排好序(升序或降序)的数组,今输入一个数,要求按原来排序(升序或降序)的规律将它插入数组中。

如题所述

升序:
<br>int i,j,num;
<br>int a[N+1]; //已排好序列的数组; N可用#define定义;输入或排序的操作我就不做了.
<br>scanf("%d",&num); //输入插入的数
<br>for(i=0;i<N;i++)
<br>{
<br>if(a[i]>num)
<br>{
<br>for(j=N;j>i;j--)a[j]=a[j-1];
<br>a[i]=num;
<br>}
<br>}
<br>for(i=0;i<N+1;i++)printf("%3d",a[i]);

有不明白的加我qq23824056
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-05-17
将要插入的数用循环和数组中已有的数逐个比较,如果比该数大(降序时)就break继续比较,否则直接插入到指针位置。如果远数组是升序则判断条件给为如果小。前提是你原来的数组已经排好序。
不足之处,比较没效率,建议使用类似二分查找的方法,即让插入的数与数组中间的数比较,如果比他大(降序时)就只让此数和他后面的比较,前面的一半就不用管了,这样比较快
相似回答