输入n(n<100)个有序正数,请用折半查找算法,查找x在其中的位置。
例如,
输入:
5
1,2,3,4,5
2
输出:
2
测试集合中,x数一定在正数数组中。即不用处理错误逻辑
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
qza2468 2021-11-15 20:40最佳回答 专家已采纳int n; scanf("%d", &n); int nums[100]; for (int i = 0; i < n; i++) { scanf("%d", nums + n); } int x; scanf("%d", &x); int left = 0, right = n; while(right > left) { if (nums[(left + right) / 2] == x) { break; } else if (nums[left + right) / 2] > x) { right = (left + right) / 2 - 1; } else if (nums[left + right) / 2] < x) { left = (left + right) / 2 + 1; } } printf("%d', left);
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
报告相同问题?
提交
相关推荐 更多相似问题
- 2021-11-15 20:29回答 1 已采纳 int n; scanf("%d", &n); int nums[100]; for (int i = 0; i < n; i++) { scanf("%d", nums + n);
- 2020-07-01 14:24回答 1 已采纳 ``` #include int binary( int *a, int key, int n ) { int left = 0, right = n - 1, mid =
- 回答 1 已采纳 可以,这里的a[20]是个定值,所以right可以直接定义:right = 19
- 2019-09-03 23:20Crownt的博客 目录寻找正确插入的位置 正常实现 Input : [1,2,3,4,5];key : 3 return the index : 2 public int binarySearch(int[] nums, int key) { int l = 0, h = nums.length - 1; while (l <= h) { int m = l + ...
- 2020-03-10 23:38weixin_37097995的博客 3. 有序数组的 Single Element 4. 第一个错误的版本 5. 旋转数组的最小数字 6. 查找区间 正常实现 Input : [1,2,3,4,5] key : 3 return the index : 2 public int binarySearch(int[] nums, int key) { int l = ...
- 2019-09-25 14:40BJTU_阿七的博客 二分查找 正常实现 Input : [1,2,3,4,5] key : 3 return the index : 2 public int binarySearch(int[] nums, int key) { int l = 0, h = nums.length - 1; while (l <= h) { int m = l + (h - l...
- 2022-04-07 19:52回答 1 已采纳 参考改一下即可。 Python 二分查找 | 菜鸟教程 Python 二分查找 Python3 实例 二分搜索是一种在有序数组中查找
- 2021-12-24 10:56回答 3 已采纳 C++算法一阶段-阶乘和插入数组-(柒)_Gao996的博客-CSDN博客 阶乘题目地址 Python 练习实例25题目:求1+2!+3!
- 2015-06-19 13:55回答 4 已采纳 #include #define Max 256 typedef struct Keylist { int key[Max]; int len; }Keylist; //void
- 2021-01-24 00:02欧气测不准的博客 数据结构与算法分析 文章目录数据结构与算法分析前言一、数据结构概述数据结构相关基本概念1. 数据2. 数据元素3. 数据项4. 数据对象5. 数据结构6. 程序结构7. 数据类型8. 算法基本结构简介1.从集合到结构体2.映射、...
- 2019-10-17 18:27Jia ming的博客 【输入形式】输入两个分数,格式为:x/y, m/n。 【输出形式】输出约分后的求和结果。 【样例输入】1/2 1/4 【样例输出】3/4 【样例输入】9/10 6/7 【样例输出】123/70 【样例输入】1/5 3/10 【样例输出】1/2(约分后...
- 2021-01-20 21:59Batman。的博客 《剑指offer》66道编程题 一、数组(共12道题目) 1、《剑指offer》1 查找特殊二维数组中的数 √ 2、《剑指offer》6 查找旋转数组中的最小数字 √ 3、《剑指offer》13 调整数组顺序,使得奇数在偶数前面 √ 4、《剑...
- 2021-06-11 17:49回答 4 已采纳 不加return的都是用参数中的数组或指针带回结果 或者是用全局变量保存结果。你这个mid就是全局变量。
- 2022-03-20 10:01回答 1 已采纳 额,你是想用break跳出两个循环吗?如果是要跳出嵌套的循环,同时写两行break是不行,要么用goto,要么用个标记变量。
- 2022-03-17 19:41回答 1 已采纳 选A吧。仔细看题目,题目问的是不能构成折半查找中关键字的比较序列,而不是问你哪个可以用折半查找
- 2015-02-12 15:32weixin_30675967的博客 1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14...
- 2021-10-14 00:33诗人在流浪的博客 经典算法面试题2.1鸡兔同笼问题(穷举法)2.2斐波那契问题2.3打印100以内除了尾数为3,5,7的所有数2.4求猴子大王2.5古典问题:生兔子问题2.6打印水仙花数2.7回文问题2.8二分法查找2.9完数问题2.10杨辉三角 1.排序算法 ...
- 2020-11-26 18:28思无邪心飞扬的博客 文章目录大O算法时间复杂度空间复杂度 大O算法 时间复杂度 在长度为n的数组中: 直接通过下标去访问元素,时间复杂度为O(1)。...相同大小的不同输入值仍可能造成算法的运行时间不同,因此我们通常使用算法的
- 2021-11-19 19:57回答 1 已采纳 这个问题没必要这么复杂吧,你定义那些结构体干什么,直接动态分配一个int数组不可以吗
- 2020-04-11 21:34李一恩的博客 文章目录算法总结第一章 链表链表求环复杂链表的复制第四章 递归、回溯与分治(一)递归Fibonacci数列矩形覆盖(二)回溯全排列求子集N皇后问题机器人运动范围(三)分治归并排序快速排序求数组中的逆序对第六章 二...
- 没有解决我的问题, 去提问