二分查找实现

#include <stdio.h>  
int main(int argc,char *argv[])  
{  
    if(argc!=2)  
        return;  
    int a[50],i,res=0;  
    for(i = 0;i<50;++i)  
        a[i]=i*3;  
    res = search(a,atoi(argv[1]),0,sizeof(a)/sizeof(int)-1);  
    if(res!=-1)  
        printf("%d,%d\r\n",search(a,atoi(argv[1]),0,sizeof(a)/sizeof(int)-1),a[res]);  
    else  
        printf("cannot find snum.");  
    return(0);  
}  
int search(int a[],int snum,int s,int e)  
{  
    int i,j,mid;  
    i = s,j = e;  
    while(i!=j)  
    {  
        mid = i + (j-i)/2;  //分界
        if(a[mid] == snum)return mid;  
        if(a[mid] > snum)  
            j = mid-1;  
        else  
            i = mid+1;  
    }  
    if(a[i]!=snum)i=-1;  
    return i;  
} 

 

posted @ 2013-05-31 21:34  alenpgl  阅读(96)  评论(0)    收藏  举报