D-OJ刷题日记:折半查找 题目编号:518
折半查找 题目编号:518
- 题目描述
- 评论
定义一个整型数组r,用于存储关键码集合,其中r[1]~r[n]用于存储有效的关键码,r[0]留作它用,注意该数组按关键码有序。按照折半查找方法,查找在关键码集合中是否有符合给定值的记录,如果有,返回该记录所在数组下标,如果没有,返回0。要求输出查找过程,即输出每一轮的low,mid,high值,查找过程中需要比较的关键码值都输出。(数组的长度小于<100)
输入描述
各个命令以及相关数据的输入格式如下: 第一行输入关键码集合中关键码的数目,假设输入的值为n; 第二行输入n个关键码,以空格隔开,注意是整型; 接下来三行输入三个待查值.
输出描述
对于每个待查值,先输出查找待查值的比较过程,即输出找到之前每一轮low,mid,high值,以空格隔开,及与待查值相比较的所有的关键码值,每一轮占一行; 接下来如果找到待查值,输出位置下标,如果没找到,输出0.
输入样例
10 2 3 5 6 8 9 11 17 44 58 5 17 4
输出样例
1 5 10 8 1 2 4 3 3 3 4 5 3 1 5 10 8 6 8 10 17 8 1 5 10 8 1 2 4 3 3 3 4 5 0
思路:略
程序代码:
#include<iostream>#define MAXSIZE 1000using namespace std;int main()
{int n;int a[MAXSIZE];cin>>n;for(int i = 1; i <= n; i++)cin>>a[i];int key;while(cin>>key){a[0] = key;int mid, low = 1, high = n;while(low<=high){mid = (low + high) / 2;if(key < a[mid]){cout<<low<<' '<<mid<<' '<<high<<' '<<a[mid];high = mid - 1;}else if(key > a[mid]){cout<<low<<' '<<mid<<' '<<high<<' '<<a[mid];low = mid + 1;}else if(key == a[mid]){cout<<low<<' '<<mid<<' '<<high<<' '<<a[mid];cout<<mid;break; } }if(key != a[mid])cout<<0;}return 0;
}
D-OJ刷题日记:折半查找 题目编号:518相关推荐
- D-OJ刷题日记:查找 题目编号:984
定义一个整型数组r,用于存储关键码集合,其中r[1]~r[n]用于存储有效的关键码,r[0]用于设置哨兵,试从数组的高端开始查找在关键码集合中是否有符合给定值的记录,如果有,则返回关键码的比较次数和该 ...
- D-OJ刷题日记:平均分 题目编号:890
用结构体数组的方法改写例9-1 [例9-1]按表9-1的形式从键盘依次输入每个学生的学号.姓名.出生年月.3门课的成绩,计算并打印出每个学生的平均成绩. 输入描述 第一行,整数n,表示一共有n个学生. ...
- 刷题日记-SQL 查找最晚入职员工的所有信息
牛客网 SQL1 查找最晚入职员工的所有信息 描述 有一个员工employees表简况如下: 请你查找employees里最晚入职员工的所有信息,以上例子输出如下: 示例: #如果数据库中存在empl ...
- 一个算法笨蛋的12月leetCode刷题日记
类似文章 一个算法笨蛋的2021年11月leetCode刷题日记 一个算法笨蛋的2021年12月leetCode刷题日记 一个算法笨蛋的2022年1月leetCode刷题日记 一个算法笨蛋的2022年 ...
- 牛客刷题日记(2021-12-8)
牛客刷题日记(2021-12-8) 题目: 以下哪个接口的定义是正确的?( )interface B { void print() { } ;}interface B { static void pr ...
- 菜菜的刷题日记 | 66.加一 Plus One
系列索引:菜菜的刷题日记 | 被LeetCode用Python狂虐的那段日子 菜鸡的刷题之路--2022/1/7 文章目录 [题目] [我的代码] [参考代码1] [参考代码2] [参考代码3] [思 ...
- 各大OJ刷题平台汇总
前言 想成为一名高级工程师,算法还是要有的,至少在入门编程和进入公司之前都是必备的.刷题也可以很好的锻炼动手能力和逻辑思维,今天就给大家介绍一些知名的在线刷题平台,都是干货哦! 力扣(leetcode ...
- CTFshow刷题日记-MISC-图片篇(上)基础操作和信息附加
ctfshow 图片篇引语 大部分题目仅涉及单一知识点,但可能有多种解法: 找到flag并不困难,关键是了解每一题背后的原理: 藏在哪?为什么可以这样藏?请多考虑这两个问题: misc脑图-misc之 ...
- 牛客刷题日记(2021-11-24)
牛客刷题日记(2021-11-24) 题目: 下面程序的输出是:() String x="fmn"; x.toUpperCase(); String y=x.replace('f' ...
最新文章
- python写小程序-用python写个简单的小程序,编译成exe跑在win10上
- nginx 电子书_Nginx最详细的反向代理配置步骤,拿去不谢
- 宁波Uber优步司机奖励政策(12月14日到12月20日)
- mysql 大分页查询优化_Mysql骚操作:优化大分页查询
- java中的纸牌游戏_Java中的宾果纸牌游戏
- 计算机安装应用程序卸的步骤,电脑软件怎么卸载,干货在这里,如何卸载电脑上安装的软件...
- 淘宝ActiveMQ安装搭建
- FFMPEG结构体分析:AVCodecContext
- APP开发流程,移动应用开发流程
- 《软件随想录》:Joel Spolsky对计算机学生的七大建议
- 【kimol君的无聊小发明】—用python写音乐下载器
- c盘压缩卷压缩不了怎么办 c盘压缩卷只能压缩一半的解决方法
- Get Window Titles关键字——获取当前已经打开的浏览器窗口的所有Title
- 游戏建模的工具主要有哪些?
- 读书笔记--交流电的瞬时值和有效值
- Adnroid 自定义流式布局
- 摄像头(camera)数据传输中 码率/比特率(Bit rate) 与 带宽(Bandwidth)对应表
- javaweb之二维码
- 今日剁手 | 这些值得买的给你准备好了,快囤起来
- [历年IT笔试题]2014腾讯校园招聘笔试试题