首页 > 其他 > 详细

数据结构--查找

时间:2017-06-25 16:34:18      阅读:261      评论:0      收藏:0      [点我收藏+]

专题--查找

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,2,4,6,8,1,3,5,7,9};
33     int index=Binary_Search(a,10,5);  
34     cout<<index<<endl;                   //7
35     return 0;
36 }

 

数据结构--查找

原文:http://www.cnblogs.com/cygalaxy/p/7077082.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!