A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 木冉 中级黑马   /  2015-11-16 11:21  /  639 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最终想实现如果没有查找到该数,则“输出未能查找到该数”,没有成功
  1. //折半查找代码实现

  2. #include <stdio.h>

  3. int bisearch(int arr[],int key,int len){
  4.         int low = 0;
  5.         int high = len-1;
  6.         //折半查找需要定义最低位和最高位,取两数的中间值将已知数与其作比较
  7.         //若已知数大于mid数,则令low = mid+1,开始新一轮查找
  8.         //若已知数小于mid数,则令high = mid-1,来是新一轮查找
  9.         //直至找到该数
  10.         while (low <= high){
  11.         int mid = (low+high)/2;
  12.         if(key == arr[mid]){
  13.                 printf("为您找到该数,为a[%d] = %d\n",mid,key);
  14.                 break;
  15.         }else if(key > arr[mid]){
  16.                 low = mid + 1;
  17.         }else if(key <arr[mid]){
  18.                 high = mid - 1;
  19.         }
  20.         }
  21.         return low;
  22. }

  23. int main(){
  24.                    //  0 1 2 3 4 5  6  7  8  9
  25.         int a[] = {1,3,5,7,8,12,23,56,58,89};
  26.         int x ;
  27.         int len = sizeof(a)/sizeof(int);
  28.         printf("请输入您需要查找的数:\n");
  29.         scanf("%d",&x);       
  30.         bisearch(a,x,len);
  31.         return 0;
  32. }
复制代码


1 个回复

倒序浏览
来学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马