数据结构--查找

专题--查找

1. 二分查找

 1 /*二分查找*/
 2 int Binary_Search(int a[],int n,int key)
 3 {
 4     int lo=0;
 5     int hi=n;
 6     //版本A
 7     while(lo<hi)
 8     {
 9         int mid=(lo+hi)>>1;
10         if(a[mid]<key)
11             lo=mid+1;
12         else if(key<a[mid])
13             hi=mid;
14         else
15             return mid;
16     }
17 
18     /*
19     //版本B:若多个命中元素,总能保证返回秩最大者;查找失败时,能够返回失败的位置
20     while(lo<hi)
21     {
22         int mid=(lo+hi)>>1;
23         key<a[mid] ?hi=mid:lo=mid+1;
24     }
25     return --lo;
26     */
27     return -1;
28 }
29 
30 int main()
31 {
32     int a[]={0,1,2,3,4,5,6,7,8,9};
33     int index=Binary_Search(a,10,5);  
34     cout<<index<<endl;                   //5
35     return 0;
36 }

 

posted @ 2017-06-25 16:24  halo_vagabond  阅读(159)  评论(0编辑  收藏  举报