题目来源:《计算机算法设计与分析》,王晓东

设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. 习题1.8 二分查找 (20 分)

    习题1.8 二分查找 (20 分) 本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下 ...

  2. 改写二分搜索算法C++

    改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的元素位置j.当搜索元素在数组中时,i和j相同,均为x在数组中的位置. //二分查找 #include <bit ...

  3. PTA:改写二分搜索算法

    改写二分搜索算法 题目: 代码如下: #include<iostream> using namespace std; int binarySearch(int arr[], int x, ...

  4. Python改写二分搜索算法

    题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数 ...

  5. 算法设计与计算(改写二分搜索算法)(教材2-3)

    二分搜索 设a[0:n-1]是一个已排好序的数组.请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j public static int binar ...

  6. 习题1.8 二分查找 (20 分) 数据结构练习

    本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Posi ...

  7. [转载] python改写二分搜索算法_二分搜索算法模板python实现

    参考链接: Python中的二分搜索binary search 二分搜索的算法理解起来比较简单 但是边界条件容易出错,比如 循环结束条件中 left 和 right 的关系,更新 left 和 rig ...

  8. L1-002 打印沙漏 (20 分)(模拟,规律,二分)

    L1-002 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇 ...

  9. 浙大版《数据结构(第2版)》题目集 习题1.9 有序数组的插入 (20 分) 二分解法

    习题1.9 有序数组的插入 (20 分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...

最新文章

  1. 中国芯片首富捐资200亿办大学!落地宁波镇海,拟名「东方理工」
  2. 在Websphere AppServer 5.1中配置数据源
  3. springboot 开发入门,及问题汇总
  4. 学python怎么教_学神IT教你Python应该怎么学
  5. SpringBoot项目在idea中运行正常,打包jar包后运行报NoClassDefFoundError和UnsatisfiedDependencyException解决方案...
  6. SAP的SqlAnyWhere中数据库日志文件删除后如何新建
  7. tuxedo错误码6_TUXEDE返回的所有错误代码
  8. 【面向对象】面向对象的分析与设计概述
  9. Android studio3.5 SDK29项目开发笔记
  10. 【Android】两种动画介绍(Tween动画、Frame动画)
  11. Ubuntu 搭建 NVIDIA驱动 CUDA 和 pytorch GPU 环境
  12. OpenCV调用摄像头+灰度图+高斯滤波+Canny算子
  13. CentOS 关闭暂不需要的系统服务
  14. BUUCTF------相册
  15. EasyExecl导出模板,实现动态下拉列
  16. 2019 AI顶会时间表
  17. 微软亚洲研究院2017年笔试编程题
  18. 打开excel很慢的解决方法
  19. Linu笔记-管线命令pipe
  20. 截止频率计算公式wc_计算截止频率Wc的快速方法

热门文章

  1. python pyqt5图片(QPixmap)和opencv图片数据结构相互转换
  2. 阿里 Arthas (阿尔萨斯)工具的使用
  3. 国外博士后申请前有哪些准备工作
  4. MFC学习笔记(一)High Speed Chart 控件使用
  5. xcode以及mac常用快捷键
  6. VUE element-ui之上传身份证照片正反面详细代码
  7. 文件所在服务器未响应,电脑用右键点文件没反应直接卡在那儿
  8. ble 读写特征值特征值_ap.readBLECharacteristicValue 读取低功耗蓝牙设备特征值中的数据 - 支付宝 Alipay JSSDK 开发文档...
  9. 浅入浅出Javac编译原理——爪哇岛探险(1)
  10. Design twelve