二分查找的递归和非递归实现

 1 int BinSearch(int Array[],int SizeOfArray,int key/*要找的值*/)
 2 {
 3     int low=0,high=SizeOfArray-1;
 4     int mid;
 5     while (low<=high)
 6     {
 7         mid = (low+high)/2;
 8         if(key==Array[mid])
 9             return mid;
10         if(key<Array[mid])
11             high=mid-1;
12         if(key>Array[mid])
13             low=mid+1;
14     }
15     return -1;
16 }

 

 

 1 int BinSearch(int Array[],int low,int high,int key/*要找的值*/)
 2 {
 3     if (low<=high)
 4     {
 5         int mid = (low+high)/2;
 6         if(key == Array[mid])
 7             return mid;
 8         else if(key<Array[mid])
 9             return BinSearch(Array,low,mid-1,key);
10         else if(key>Array[mid])
11             return BinSearch(Array,mid+1,high,key);
12     }
13     else
14         return -1;

15 } 

 

posted @ 2013-05-03 23:38  karlthas  阅读(1548)  评论(0编辑  收藏  举报