1,二分查找:

点击打开链接

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. int Find(int arr[], int key,int length)  
  2. {  
  3.  assert(arr!=NULL&&length>0);  
  4. int low=0,high=length,mid;  
  5. while(low<=high)  
  6.  {  
  7.  mid=(low+high)/2;  
  8. if(arr[mid]==key) return mid;  
  9. else  
  10.  {  
  11. if(arr[mid]>key) high=mid-1;  
  12. else low=mid+1;  
  13.  }  
  14.  }  
  15. return-1;  
  16. }  


假定集合中油重复的元素,找到某个数首次出现的位置

 

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
    1. int find(int * arr , int length, int key){  
    2.     int low = 0,high = length-1,mid;  
    3.     while(low <= high){  
    4.         mid = (low + high)/2;  
    5.         if (arr[mid] < key){  
    6.             low = mid + 1;  
    7.         }else if(arr[mid] > key){  
    8.             high = mid - 1;  
    9.         }else{  
    10.             if (mid == 0) return mid;  
    11.             if (mid >= 1 && arr[mid-1] != key) return mid;  
    12.             else high = mid - 1;  
    13.         }  
    14.     }  
    15.     return -1;  
    16. }  
posted on 2015-01-20 20:01  知了112  阅读(150)  评论(0编辑  收藏  举报