二分法查找

#include <math.h>

int ifindi(int n,int arr[],int v)
{
    int i,begin=0,end=n-1,mid;

    if(v<arr[0] || v>arr[n-1])
        return -9;
    if(n<=0)
        return -9;

//    mid=rint((end-begin)/2);
    while(1)
    {
        if((end-begin)<=1){
            if(arr[begin]==v) return begin;
            if(arr[end]==v) return end;
        }
        mid=begin+rint((end-begin)/2);
//        printf("mid=%d\n",mid);
        if(v>=arr[begin] && v<arr[mid]) end=mid;
        if(v>=arr[mid] && v<=arr[end]) begin=mid;
//        printf("begin=%d, end=%d\n",begin,end);
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注