首页 > 代码库 > 数据结构--查找

数据结构--查找

专题--查找

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         else15             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;                   //735     return 0;36 }

 

数据结构--查找