黑马程序员技术交流社区

标题: 折半查找 [打印本页]

作者: ITClody    时间: 2015-6-18 00:27
标题: 折半查找
      //使用折半查找来查找一个数
          //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);
          }
         


作者: 李言    时间: 2015-6-18 07:05
顶一下,共同学习了
作者: ITClody    时间: 2015-6-18 09:25
李言 发表于 2015-6-18 07:05
顶一下,共同学习了

嗯嗯,共同学习
作者: 丁铭检    时间: 2015-6-18 09:31
如果能把其中心思想一并带上那就更完美了。。
作者: ITClody    时间: 2015-6-18 09:34
丁铭检 发表于 2015-6-18 09:31
如果能把其中心思想一并带上那就更完美了。。

好提议,随后附加上
作者: 黑马潜力股    时间: 2015-6-18 12:54
感觉这个还是比较麻烦的额
作者: ITClody    时间: 2015-6-18 13:40
黑马潜力股 发表于 2015-6-18 12:54
感觉这个还是比较麻烦的额

嗯,这个只是其中的一种方法。亲,如果有更好的方法,记得分享哦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2