7-2 改写二分搜索算法 (20 分)
题目来源:《计算机算法设计与分析》,王晓东
设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
输入格式:
输入有两行:
第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。
输出格式:
输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1的值 n的值
输入样例:
在这里给出一组输入。
例如:
6 5
2 4 6 8 10 12
输出样例:
在这里给出相应的输出。
例如:1 2
#include<iostream>
using namespace std;
void changeBinarySearch(int a[],int l,int r,int x)
{if(l==r){if(a[l]<x){cout<<l<<" "<<l+1;}if(a[l]==x)cout<<l<<" "<<l;if(a[l]>x)cout<<l-1<<" "<<l;return;}if(l>r){cout<<l<<" "<<l+1;}int m=(r+l)/2;if(a[m]==x){cout<<m<<" "<<m;}else if(a[m]>x){return changeBinarySearch(a,l,m-1,x);}else {return changeBinarySearch(a,m+1,r,x);}
}
int main()
{int n,a[1000],x;cin>>n;cin>>x;for(int i=0;i<n;i++){cin>>a[i];}if(x<a[0]){cout<<-1<<" "<<0;}else if(x>a[n-1]){cout<<n-1<<" "<<n;}else changeBinarySearch(a,0,n-1,x);system("pause");
}
7-2 改写二分搜索算法 (20 分)相关推荐
- 习题1.8 二分查找 (20 分)
习题1.8 二分查找 (20 分) 本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下 ...
- 改写二分搜索算法C++
改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的元素位置j.当搜索元素在数组中时,i和j相同,均为x在数组中的位置. //二分查找 #include <bit ...
- PTA:改写二分搜索算法
改写二分搜索算法 题目: 代码如下: #include<iostream> using namespace std; int binarySearch(int arr[], int x, ...
- Python改写二分搜索算法
题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数 ...
- 算法设计与计算(改写二分搜索算法)(教材2-3)
二分搜索 设a[0:n-1]是一个已排好序的数组.请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j public static int binar ...
- 习题1.8 二分查找 (20 分) 数据结构练习
本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Posi ...
- [转载] python改写二分搜索算法_二分搜索算法模板python实现
参考链接: Python中的二分搜索binary search 二分搜索的算法理解起来比较简单 但是边界条件容易出错,比如 循环结束条件中 left 和 right 的关系,更新 left 和 rig ...
- L1-002 打印沙漏 (20 分)(模拟,规律,二分)
L1-002 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇 ...
- 浙大版《数据结构(第2版)》题目集 习题1.9 有序数组的插入 (20 分) 二分解法
习题1.9 有序数组的插入 (20 分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...
最新文章
- 中国芯片首富捐资200亿办大学!落地宁波镇海,拟名「东方理工」
- 在Websphere AppServer 5.1中配置数据源
- springboot 开发入门,及问题汇总
- 学python怎么教_学神IT教你Python应该怎么学
- SpringBoot项目在idea中运行正常,打包jar包后运行报NoClassDefFoundError和UnsatisfiedDependencyException解决方案...
- SAP的SqlAnyWhere中数据库日志文件删除后如何新建
- tuxedo错误码6_TUXEDE返回的所有错误代码
- 【面向对象】面向对象的分析与设计概述
- Android studio3.5 SDK29项目开发笔记
- 【Android】两种动画介绍(Tween动画、Frame动画)
- Ubuntu 搭建 NVIDIA驱动 CUDA 和 pytorch GPU 环境
- OpenCV调用摄像头+灰度图+高斯滤波+Canny算子
- CentOS 关闭暂不需要的系统服务
- BUUCTF------相册
- EasyExecl导出模板,实现动态下拉列
- 2019 AI顶会时间表
- 微软亚洲研究院2017年笔试编程题
- 打开excel很慢的解决方法
- Linu笔记-管线命令pipe
- 截止频率计算公式wc_计算截止频率Wc的快速方法
热门文章
- python pyqt5图片(QPixmap)和opencv图片数据结构相互转换
- 阿里 Arthas (阿尔萨斯)工具的使用
- 国外博士后申请前有哪些准备工作
- MFC学习笔记(一)High Speed Chart 控件使用
- xcode以及mac常用快捷键
- VUE element-ui之上传身份证照片正反面详细代码
- 文件所在服务器未响应,电脑用右键点文件没反应直接卡在那儿
- ble 读写特征值特征值_ap.readBLECharacteristicValue 读取低功耗蓝牙设备特征值中的数据 - 支付宝 Alipay JSSDK 开发文档...
- 浅入浅出Javac编译原理——爪哇岛探险(1)
- Design twelve