请教C编程高手!!各位ggjj:
我建议最好用二叉排序树来实现该功能比较方便,因为插入数据时不需要移动其它数据元素,而用数组的话一定要移动,其实数组比较适合需要经常查询而较少修改的情况。
下面我先给出数组查询函数,然后再实现插入功能
int query(int array[],int low,int high,int num)
/*此函数也可以用循环改写*/
{
if(low>high)return high;
if(array[(low+high)/2]==num)
return (low+high)/2;
if(array[(low+high)/2]>num)
return query(array[],(low+hig...全部
我建议最好用二叉排序树来实现该功能比较方便,因为插入数据时不需要移动其它数据元素,而用数组的话一定要移动,其实数组比较适合需要经常查询而较少修改的情况。
下面我先给出数组查询函数,然后再实现插入功能
int query(int array[],int low,int high,int num)
/*此函数也可以用循环改写*/
{
if(low>high)return high;
if(array[(low+high)/2]==num)
return (low+high)/2;
if(array[(low+high)/2]>num)
return query(array[],(low+high)/2,high-1,num);
else
return query(array[],low+1,(low+high)/2,num);
}
void move(int array[],int high, int num)
/*注意此处high=数组实际存储数值个数+1*/
{
for(;high>=0;high--)
if(high==0)
{array[0]=num;break;}
if(array[high-1]>num)
array[high]=array[high-1];
else
{array[high]=num;break;}
}
主程序我就不写了,当然更没有编译了。
如果有什么问题欢迎提出。我会努力帮忙解决。本人 。收起