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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cuin 中级黑马   /  2015-6-28 08:58  /  769 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨晚学习了折半查找法,今早起来练练手儿,看看记住没有


  1. #include <stdio.h>

  2. /**
  3. *  折半查找函数
  4. *
  5. *  @param num      待查找的数组
  6. *  @param length   数组的长度
  7. *  @param keyValue 要查找的key值
  8. *
  9. *  @return 返回key的位置
  10. */
  11. int searchNum(int num[],int length,int keyValue){
  12.     //定义变量
  13.     int low=0,high=length-1,middle;
  14.    
  15.     while (low<=high) {
  16.         //给middle赋值
  17.         middle=(low+high)/2;
  18.         //当key>middle middle=low+1
  19.         if(keyValue>num[middle]){
  20.             low=middle+1;
  21.         }
  22.         //当key<middle middle=high-1
  23.         else if(keyValue<num[middle]){
  24.             high=middle-1;
  25.         }
  26.         //当key==middle,return middle
  27.         else if(keyValue==num[middle]){
  28.             return middle;
  29.         }
  30.     }
  31.     return -1;
  32.    
  33. }

  34. int main(int argc, const char * argv[]) {
  35.     // 定义一个有序的已知数组
  36.     int num[]={3,12,34,56,66,73,86,92,111,120};
  37.     //调用查找函数,返回keyValue位置
  38.     int index = searchNum(num, 10, 110);
  39.     printf("%d\n",index);
  40.     return 0;
  41. }
复制代码

3 个回复

正序浏览
楼主再加上询问客户是否插入查找的值,若选择插入则返回插入结果和插入位置
回复 使用道具 举报
格式排版的很不错,注释也很清晰。。。
回复 使用道具 举报
牛逼啊,感觉,还要好好看看的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马