开发者社区> 问答> 正文

用递归法写一个折半查找的算法

用递归法写一个折半查找的算法

展开
收起
知与谁同 2018-07-16 19:38:57 1679 0
2 条回答
写回答
取消 提交回答
  • #include<stdio.h>
    int bin_search(int le,int ri,int num,int arr[])
    {
    int mid;
    mid=((le+ri)>>1);
    if(le>ri){
    return -1;
    }
    else if(arr[mid]==num){
    return mid;
    }
    else if(arr[mid]<num){
    return bin_search(mid+1,ri,num,arr);
    }
    else{
    return bin_search(le,mid-1,num,arr);
    }
    }
    int main()
    {
    int arr[101];
    int local=-1;
    for(int i=1;i<=100;i++)
    arr[i]=i*2-1;
    int num;
    scanf("%d",&num);
    local=bin_search(1,100,num,arr);
    if(local!=-1){
    printf("local = %d and value = %d\n",local, arr[local]);
    }
    else {
    printf("no such number!\n");
    }
    }
    2019-07-17 22:54:35
    赞同 展开评论 打赏
  • TA有点害羞,没有介绍自己...
    // 二分查找前提数组元素已按升序排序
    int binsearch(int value, int a[], int nArrayLen)
    {
    int nMid = nArrayLen / 2;

    if (value == a[nMid])

    return nMid; // 找到下标

    if (nMid == 0)

    return -1; // 找不到

    if (value < a[nMid])
    return binsearch(value, a, nMid);

    else

    return binsearch(value, a + nMid, nArrayLen - nMid);

    }
    2019-07-17 22:54:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载