折半查找

#include<stdio.h>
#define N 15
int Search_array(int array[],int n,int value)
{
    int low=0;
    int high=n-1;
    int mid;
    while(low<=high)
    {
        mid=(low+high)/2;
        printf("左值,右值,中间值[%d,%d,%d]\n",low,high,mid);
        if(value==array[mid])
        {
            return mid;
        }
        else if(value<array[mid])
        {
            high=mid-1;
        }
        else
        {
            low=mid+1;
        }
    }
    return -1;
}
int main()
{
    int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    int key;
    scanf("%d",&key);
    int i=Search_array(a,N,key);
    if(i!=-1)
    {
        printf("查找成功,%d在数组中的下标为 %d",key,i);
    }
    else
    {
        printf("查找失败");
    }
    return 0;
}
posted @ 2021-08-06 09:01  卿源  阅读(72)  评论(0)    收藏  举报