首页 > 试题广场 >

用C语言描述二分查找算法。

[问答题]
用C语言描述二分查找算法。
由于二分查找的使用前提是这个给定的数组是有序的,所以 首先确定药查找数据,从给定数组的中心开始找起 如果目标数据小于中心数据 就将范围缩小到数组开始到中心数据 在此范围内继续分中心数据与目标数据比较 ,假如目标数据大于中心数据 就将范围缩小为中心数据到数组末尾,然后在找此范围的中心数据与目标数据做比较。如果找完整个数组都未找到目标数据 则说明目标数据不在数组中,如果有就直接返回true
发表于 2018-04-08 15:26:42 回复(0)
#include<stdio.h>
# define k 3
int main()
{
    int r[10]={0,2,4,5,7,9,12,16,19,20};
             /*0,1,2,3,4,5,6,,7,,8,,9*/
    int low,mid,high;
    low=0;
    high=9;
    while (low<=high)
    {
        mid=(low+high)/2;
        if(k==r[mid])
        {
            printf("%d",mid);
            return 0;
        }
        else if(k<r[mid]) high=mid-1;
        else low=mid+1;
    }
    printf("Don't find item\n");
    return 0;
}

发表于 2021-08-05 11:00:24 回复(0)
int binary_search(int *a, int n, int key) { int low, high, mid; low = 1; high = n; while(low <= high) { mid = (low + high) / 2; if(key<a[mid]) high = mid - 1; if(key>a[mid]) low = mid +1; else return mid; } return 0; }
发表于 2018-04-11 09:51:13 回复(0)