PTA:改写二分搜索算法
改写二分搜索算法
题目:
代码如下:
#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:改写二分搜索算法相关推荐
- 改写二分搜索算法C++
改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的元素位置j.当搜索元素在数组中时,i和j相同,均为x在数组中的位置. //二分查找 #include <bit ...
- 7-2 改写二分搜索算法 (20 分)
题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数 ...
- 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 ...
- [转载] python改写二分搜索算法_二分搜索算法模板python实现
参考链接: Python中的二分搜索binary search 二分搜索的算法理解起来比较简单 但是边界条件容易出错,比如 循环结束条件中 left 和 right 的关系,更新 left 和 rig ...
- Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查
1.使用二分搜索算法查找任意N个有序数列中的指定元素. 2.通过上机实验进行算法实现. 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告. 4.至少使用两种方法进行编程,直接查找/递归 ...
- C++——《算法分析与设计》实验报告——二分搜索算法
实验名称: 二分搜索算法 实验地点: 实验目的: 理解分治算法的概念和基本要素: 理解递归的概念: 掌握设计有效算法的分治策略: 通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为 ...
- C++——《算法分析》实验壹——二分搜索算法
实验目的: 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧: 实验原理: 二分搜索算法也称为折半查找法,它充分利用 ...
- this.$set 更新整个数组_学点算法(二)——有序数组二分搜索算法
成功与失败 今天来学习一下二分搜索算法.二分搜索算法针对有序数组,如果数组乱序,则无法使用二分搜索法. 先来看一下二分搜索算法的运行原理: 判断区间是否有效,无效区间则退出循环. 取待查找区间的中间位 ...
最新文章
- JAVA语言基础组成(2)
- 分布式消息队列知识图谱
- spring 深入reading
- Java游戏地下城_地下城与勇士DNF-鬼剑士
- java方法2数据求和_Leet Code 2 Add Two Numbers - 链表表示的两个数求和 - Java
- 原来python中实现语音识别如此简单!
- 上海计算机和金融专业,姚明:我将去上海交大读书 选择计算机金融专业
- Spring Boot:(三)开发Web应用之Thymeleaf篇
- 移动开发之设计稿转换页面单位尺寸
- php flock 使用实例
- Ubuntu18.04之boost警告报错
- 自学c语言后的感受,一路走来,浅谈c语言的学习感想
- Web安全之SQL注入攻击技巧与防范
- 机器学习(周志华)知识点总结——第3章 线性模型(后期上传word/PDF)
- (原创)AP6212蓝牙模块在am335x控制板上的应用
- php求圆柱体积,认识圆柱体a href=http://ruiwen.com/friend/list.php(教师中心专稿)/a -- 小学数学教学资源网...
- 截图并使用libjpeg库压缩BMP为JPG与将JPG转换为BMP
- 新手学Python之学习官网教程(五: Data Structures)
- css实现日出日落效果
- firefox装在linux_在 Linux 中安装 Firefox
热门文章
- echarts实现世界地图,解决series-map和geo同时使用导致在地图上缩放图层会重叠的问题
- pinpoint部署在docker容器中
- 刚刚!2022中国大学工科排名出炉!
- archlinux的一些配置脚步
- wps html嵌入ppt,WPS怎么给PPT快速嵌入需要的字体
- python做彩色字_python在命令行打印彩色文字
- 打印彩色字体,控制台
- Android[中级教程]第六章 XML解析之SAX解析器
- 蒲公英java后台上传_Android apk 项目一键打包并上传到蒲公英的实现方法
- 2023跨境出海指南:泰国网红营销白皮书