失败学专家诶♬ 2023-07-18 21:37 采纳率: 83.9%
浏览 31
已结题

二分查找,为什么数组里面有6,但是还是会打印出notfound呢

二分查找,为什么数组里面有6,但是还是会打印出notfound呢

img

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2023-07-18 22:06
    关注

    数组作为函数的形参,退化为指针,所以在int index(int a[], int target)函数里用 sizeof()得到的是一个指针的大小值,不是数组的长度值。
    修改如下,改动处见注释,供参考:

    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    int index(int a[], int n, int target) // 修改
    {
        int i = 0, j = n - 1;  // 修改
        while (i <= j) {
            int m = i + (j - i) / 2;
            if (a[m] > target)
                j = m - 1;
            else if (a[m] < target)
                i = m + 1;
            else
                return m;
        }
        return -1;
    }
    int main()
    {
        int a[3] = {1,3,6};
        int res = index(a, 3, 6); // 修改
        if (res != -1)
            printf("%d", res);
        else
            printf("not found");
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月29日
  • 已采纳回答 7月21日
  • 创建了问题 7月18日

悬赏问题

  • ¥15 根据历年月数据,用Stata预测未来六个月汇率
  • ¥15 DevEco studio开发工具 真机联调找不到手机设备
  • ¥15 请教前后端分离的问题
  • ¥100 冷钱包突然失效,急寻解决方案
  • ¥15 下载honeyd时报错 configure: error: you need to instal a more recent version of libdnet
  • ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
  • ¥15 霍尔传感器hmc5883l的xyz轴输出和该点的磁感应强度大小的关系是什么
  • ¥15 vscode开发micropython,import模块出现异常
  • ¥20 Excel数据自动录入表单并提交
  • ¥30 silcavo仿真,30分钟,只需要代码