改写二分搜索算法

题目:

代码如下:


#include<iostream>
using namespace std;
int binarySearch(int arr[], int x, int low, int high) {if (low > high) {return low;};int mid = (low + high) / 2;if (arr[mid] == x) {return mid;};if (arr[mid] > x) {return binarySearch(arr, x, low, mid - 1);}else {return binarySearch(arr, x, mid + 1, high);}
}int main() {int len;int arr[100000];int x;cin >> len;cin >> x;for (int i = 0; i < len; i++) {cin >> arr[i];};int index = binarySearch(arr, x, 0, len - 1);if (arr[index] == x) {cout << index << " " << index << endl;}else {cout << index - 1 << " " << index << endl;}system("pause");return 0;
}

解析:
这道题我们需要输出x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。只要对经典二分查找算法binarySearch函数进行改写,当元素不存在时,返回low即可。(图用left和right更明显)。




因为当low>high时即退出递归返回,所以此时low一定是刚好大于x的最小元素位置的下标(即j)。由题目可以看出,i和j的坐标一定是连续的。所以只要输出low和low-1即可。当元素存在时,返回mid下标并输出。

PTA:改写二分搜索算法相关推荐

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

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

  2. 7-2 改写二分搜索算法 (20 分)

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

  3. Python改写二分搜索算法

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

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

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

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

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

  6. Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查

    1.使用二分搜索算法查找任意N个有序数列中的指定元素. 2.通过上机实验进行算法实现. 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告. 4.至少使用两种方法进行编程,直接查找/递归 ...

  7. C++——《算法分析与设计》实验报告——二分搜索算法

    实验名称: 二分搜索算法 实验地点: 实验目的: 理解分治算法的概念和基本要素: 理解递归的概念: 掌握设计有效算法的分治策略: 通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为 ...

  8. C++——《算法分析》实验壹——二分搜索算法

    实验目的: 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为折半查找法,它充分利用 ...

  9. this.$set 更新整个数组_学点算法(二)——有序数组二分搜索算法

    成功与失败 今天来学习一下二分搜索算法.二分搜索算法针对有序数组,如果数组乱序,则无法使用二分搜索法. 先来看一下二分搜索算法的运行原理: 判断区间是否有效,无效区间则退出循环. 取待查找区间的中间位 ...

最新文章

  1. JAVA语言基础组成(2)
  2. 分布式消息队列知识图谱
  3. spring 深入reading
  4. Java游戏地下城_地下城与勇士DNF-鬼剑士
  5. java方法2数据求和_Leet Code 2 Add Two Numbers - 链表表示的两个数求和 - Java
  6. 原来python中实现语音识别如此简单!
  7. 上海计算机和金融专业,姚明:我将去上海交大读书 选择计算机金融专业
  8. Spring Boot:(三)开发Web应用之Thymeleaf篇
  9. 移动开发之设计稿转换页面单位尺寸
  10. php flock 使用实例
  11. Ubuntu18.04之boost警告报错
  12. 自学c语言后的感受,一路走来,浅谈c语言的学习感想
  13. Web安全之SQL注入攻击技巧与防范
  14. 机器学习(周志华)知识点总结——第3章 线性模型(后期上传word/PDF)
  15. (原创)AP6212蓝牙模块在am335x控制板上的应用
  16. php求圆柱体积,认识圆柱体a href=http://ruiwen.com/friend/list.php(教师中心专稿)/a -- 小学数学教学资源网...
  17. 截图并使用libjpeg库压缩BMP为JPG与将JPG转换为BMP
  18. 新手学Python之学习官网教程(五: Data Structures)
  19. css实现日出日落效果
  20. firefox装在linux_在 Linux 中安装 Firefox

热门文章

  1. echarts实现世界地图,解决series-map和geo同时使用导致在地图上缩放图层会重叠的问题
  2. pinpoint部署在docker容器中
  3. 刚刚!2022中国大学工科排名出炉!
  4. archlinux的一些配置脚步
  5. wps html嵌入ppt,WPS怎么给PPT快速嵌入需要的字体
  6. python做彩色字_python在命令行打印彩色文字
  7. 打印彩色字体,控制台
  8. Android[中级教程]第六章 XML解析之SAX解析器
  9. 蒲公英java后台上传_Android apk 项目一键打包并上传到蒲公英的实现方法
  10. 2023跨境出海指南:泰国网红营销白皮书