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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ITClody 中级黑马   /  2015-6-18 00:27  /  1078 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      //使用折半查找来查找一个数
          //arr是数组
          //len是数组长度
          //key是要查找的数(关键字)
          //return 返回要查找的数的位置,如果查找不到,返回 -1
          int searchItem(int arr[],int len,int key){
                int low=0,high=len-1,mid;
                while(low<=high){
                        mid=(low+high)/2;
                        if(key>arr[mid]){
                                low=mid+1;
                        }else if(key<arr[mid]){
                                high=mid-1;
                        }else{
                                return mid;
                        }
                }
                //如果查找不到,返回-1
                return -1;
          }
          
          int main(){
                int arr[]={3,4,12,20,21,23,28,45,67,100};
                //查找key值=20
                int loc=searchItem(arr,10,20);
                printf("loc = %d\n",loc);
          }
         

6 个回复

倒序浏览
顶一下,共同学习了
回复 使用道具 举报
李言 发表于 2015-6-18 07:05
顶一下,共同学习了

嗯嗯,共同学习
回复 使用道具 举报
如果能把其中心思想一并带上那就更完美了。。
回复 使用道具 举报
丁铭检 发表于 2015-6-18 09:31
如果能把其中心思想一并带上那就更完美了。。

好提议,随后附加上
回复 使用道具 举报
感觉这个还是比较麻烦的额
回复 使用道具 举报
黑马潜力股 发表于 2015-6-18 12:54
感觉这个还是比较麻烦的额

嗯,这个只是其中的一种方法。亲,如果有更好的方法,记得分享哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马