小弟有一道C语言的题不会解!希望大家来帮下忙!!
有一个已经排好序的数组。要求输入一个数,在数组中查找是否有这个数,如果有,将该数从数组中删除,要求删除后的数组仍然保持有序;如果没有,则输出“数组中没有这个数!”。请问大...
有一个已经排好序的数组。要求输入一个数,在数组中查找是否有这个数,如果有,将该数从数组中删除,要求删除后的数组仍然保持有序;如果没有,则输出“数组中没有这个数!”。
请问大家怎么解啊? 展开
请问大家怎么解啊? 展开
2个回答
展开全部
最基本的查找算法——折半查找。
int bsearch(int b[],int high,int key) /*b[]待查数组,high数组长度,key待查关键字*/
{
int low=0;
int mid=0;
while(low<=high)
{
mid=(low+high)/2;
if(b[mid]==key)return mid; /*查找成功,返回查询结果*/
else if(b[mid]>key)high=mid-1; /*查找前半部份*/
else low=mid+1; /*查找后半部份*/
}
return -1; /*查找失败*/
}
其他部分很简单了,自己写写看,全部要别人帮你写的话是不会有进步的,写出来有问题不懂的再提问!
int bsearch(int b[],int high,int key) /*b[]待查数组,high数组长度,key待查关键字*/
{
int low=0;
int mid=0;
while(low<=high)
{
mid=(low+high)/2;
if(b[mid]==key)return mid; /*查找成功,返回查询结果*/
else if(b[mid]>key)high=mid-1; /*查找前半部份*/
else low=mid+1; /*查找后半部份*/
}
return -1; /*查找失败*/
}
其他部分很简单了,自己写写看,全部要别人帮你写的话是不会有进步的,写出来有问题不懂的再提问!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询