C语言折半查找

 1.查找:意思就是要找到指定元素, 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半

2.折半查找要求被查找的元素要按顺序排列(从小到大或从大到小)

#include
#define NUM 10//宏定义,即代码中所有的NUM都等于10

int a[]={6,12,28,37,54,65,69,83,90,92};

int BinarySearch(int s[],int n,int key)
{
    int low,high,mid;
    low=0;
    high=n-1;
    while(low<=high)
    {
        mid=(low+high)/2;   //计算中间元素序号
        if(s[mid]==key)     //中间元素与关键字相等
            return mid;
        else if(s[mid]>key)         //中间元素大于关键字
            high=mid-1;
        else
            low=mid+1;
    }
    return -1;      //查找失败返回-1
}

int main()
{
    int key,pos;
    printf("原数据为:");
    for(int i=0;i=0)
        printf("查找成功!在第%d位!",pos+1);
    else
        printf("查找失败!");
    return 0;

}

以下是运行结果:

C语言折半查找_第1张图片

你可能感兴趣的:(c语言,算法)