新手 ,请教C++一道作业题

再生之翼 2021-02-22 12:38:09
新手 ,请教C++一道作业题

题目描述

定义BinSearch函数实现数组元素的二分查找

输入

第一行是正整数n(1 ≤ N ≤30000),n是待查找自然数的数目。
第二行是n个升序排列的不重复的自然数X1、X2、……Xn,以空格间隔,|Xn|≤1000
第三行是自然数key,key是待查找的数

输出

若查找成功,则输出2个数:查找次数、key所在位置,以空格间隔
若查找失败,则输出“Error”
如在“15 18 21 33 35 38 45 66 69 78 88 89 93 96”中查找66,查找了4次,位置在第8位,则输出“4 8”
...全文
186 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我去买橘子12 2021-02-25
  • 打赏
  • 举报
回复
如果是有序的数组,可以直接用二分查找法查找

int binarySearch(int array[], int low, int high, int target) {

int middle = (low + high)/2;

if(low > high) {
return -1;
}

if(target == array[middle]) {
return middle;
}

if(target < array[middle]) {
return binarySearch(array, low, middle-1, target);
}

if(target > array[middle]) {
return binarySearch(array, middle+1, high, target);
}
}
  • 打赏
  • 举报
回复
二分查找不需要找那么多次从7开始找

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧