北京佑三药业:c语言 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。

来源:百度文库 编辑:高校问答 时间:2024/04/29 11:49:08

insert(int val,int* array,int* len)
//val为要插入的数,array为已排序的数组(假设为升序),len为数组元素个数。
{
int count,i;
i=*len;
for(count=0;count<i;count++)
{
if(val<array[count]) break;
}
do
{
array[i+1]=array[i];
i--;
}while(i>=count);
array[count]=val;
(*len)++; //插入后将数组长度增加一
}

就按湛蓝水晶的做,另外,如果数组不大,这样就可以了,如果非常大的话,查找插入位置时可以考虑二分法

#include "stdio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int num,i,j;
printf("Array a:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert data:");
scanf("%d",&num);
for(i=0;i<10;i++)
if(a[i]>num)
{j=a[i];a[i]=num;num=j;}
a[i]=num;
printf("Now,array a:\n");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
}
这绝对正确,我上机验证过了!!要加分啊。。。

for循环
遇到比它小货币它大时,插入

2维数组