二分查找法

 1 int Binary_Search(SeqList L, ElemType key){
 2     int low = 0, high = L.length - 1, mid;
 3     while(low < high){                  
 4         mid = (low + high)/2;           //取中间位置
 5         if(L.elem[mid] == key)
 6             return mid;                 //查找成功返回所在位置
 7         else if(L.elem[mid] > key)
 8             high = mid -1;              //在前半部分查找
 9         else 
10             low = mid +1;               //在后半部分查找
11     }
12     return -1;                          //查找失败
13 }
14 
15 int BinarySearchRec(SeqList L, ElemType key, int low, int high){
16     if(low > high)
17         return -1;                          //判断数据合法性
18     mid = (low + high)/2;                   //取中间位置
19     if(L.elem[mid] > key)
20         BinarySearchRec(L,key,low,high-1);  //在前半部分查找
21     else if(L.elem[mid] < key)
22         BinarySearchRec(L,key,low+1,high);  //在后半部分查找
23     else
24         return mid;                         //查找成功返回所在位置
25 }

 

posted @ 2021-12-06 20:30  某科学的撒把豆子  阅读(14)  评论(0)    收藏  举报