1. 程式人生 > >數據結構--查找

數據結構--查找

數據 end 能夠 div code out 元素 search ron

專題--查找

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 }

數據結構--查找