用折半查找法实现排序好的数组的查找(有重复记录)

int halfFind(int a[],int n,int num)//二分查找,返回重复的第一个
{
     if(n<1) return -1;
     int start=0,end=n-1;
     int pos;
     
     while(start<end)
     {
         pos=(start+end)/2;
         if(a[pos]==num)  end=pos;
         else if(a[pos]<num) start=pos+1;
         else end=pos-1;
     }
     
     if(a[start]==num) return start;
     
     return -1;
}
int _tmain(int argc, _TCHAR* argv[])
{
    int a[10]={1,3,5,6,6,6,6,9,12,15};    
    
    int index=halfFind(a,10,6);
    
    cout<<index<<endl;   
       
    return 0;

返回结果为3 

原文地址:https://www.cnblogs.com/yunfei181/p/2101778.html