输入了54321,查找2但是一直显示找不到,看代码感觉没问题,应该是刚学学不精不知道哪出错了.
3条回答 默认 最新
- qzjhjxj 2022-11-07 19:58关注
两个地方的问题,第11行取数组长度错误的,这里得到sz=100,第17行取 mid 的值算法错误,修改如下,供参考:
#include <stdio.h> int main() { int s[100],sz=0; //修改 for (int i=0;i<5;sz++,i++)//修改 scanf("%d",&s[i]); int n; scanf("%d",&n); //int sz=sizeof(s)/sizeof(s[0]); //修改 int left = 0; int right = sz - 1; while (left <= right) { int mid = left + (right - left)/2; //int mid = (left + (right + left)/2);//修改 if (s[mid] == n) { printf("%d %d",n , mid+1); break; } else if(s[mid]>n) { left = mid + 1; } else if(s[mid]<n) { right = mid -1; } } if (left > right) printf("找不到"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用