二分查找,为什么数组里面有6,但是还是会打印出notfound呢
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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分钟,只需要代码