
c语言怎么使用折半法
有15个数由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,输出“没有此数”比如chara【】={89,9...
有15个数由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,输出“没有此数”
比如char a【】={89,99,121,220,250,260,400}等,这个升序数组,怎么能够通过折半法找到想要的数。希望各位老师帮帮,把源代码发一下,谢谢。 展开
比如char a【】={89,99,121,220,250,260,400}等,这个升序数组,怎么能够通过折半法找到想要的数。希望各位老师帮帮,把源代码发一下,谢谢。 展开
1个回答
展开全部
int a[]={89,99,122,220,250,260,400};
//如果返回right的值,说明没找到
int half_find(int a[], //查找数组
int left, int right, //起始位置
int target) //查找目标
{
int pos = right;
while (left < right)
{
int mid = left + (right-left)/2;
if (a[mid] > target)
{//大于目标就在左边找
right = mid;
}
else if (a[mid] < target)
{//小于目标就在右边找
left = mid+1;
}
else
{//找到了就返回
return mid;
}
}
return pos;
}
int main()
{
int pos;
printf("%d\n", half_find(a, 0, 7, 400)); //找到
printf("%d\n", half_find(a, 0, 7, 220)); //找到
printf("%d\n", half_find(a, 0, 7, 77)); //返回7,说明没找到
system("pause");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询