c语言怎么使用折半法

有15个数由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,输出“没有此数”比如chara【】={89,9... 有15个数由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,输出“没有此数”

比如char a【】={89,99,121,220,250,260,400}等,这个升序数组,怎么能够通过折半法找到想要的数。希望各位老师帮帮,把源代码发一下,谢谢。
展开
 我来答
tdlikelei
2013-09-22 · TA获得超过536个赞
知道小有建树答主
回答量:417
采纳率:58%
帮助的人:190万
展开全部
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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式