改写二分搜索算法

题目:

代码如下:


#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. from torchvision import _C解决办法
  2. 数字对 (长乐一中模拟赛day2T2)
  3. Oracle查询给表起别名
  4. Why React?
  5. 从底层分析c和类c语言
  6. 左程云算法Day6 图
  7. python筛选同义词_Python-比较同义词NLTK
  8. springcloud+eureka+seata实现分布式事务处理
  9. 航空公司系统是怎样炼成的
  10. 安装Ubuntu时:安装程序向硬盘复制文件时遇到错误
  11. (个人笔记系列) Java基础语法
  12. The Python Crop Simulation Environment 系列学习笔记(二)
  13. 项目经理证书PMP怎么考
  14. 在线创建MySQL表
  15. Reactive 简介
  16. 使用kolla-ansible部署多节点OpenStack(T版)及对接Ceph
  17. ISD1820c语言程序,DIY制作ISD1820语音录放/喊话器,附原理图/PCB/BOM/程序
  18. 怎么将DWG转换成JPG黑白
  19. Spark Streaming 项目实战 (4) | 得到最近1小时广告点击量实时统计并写入到redis
  20. 华红兵:2019手机核心竞争力已从产品转移到服务!

热门文章

  1. QMT中print内容同时输出到控制台和日志文件
  2. 计算机word文档如何复制到手机上,手机上复制一篇文章怎么放到电脑里
  3. zabbix-api查询机器资源利用率,导出execl表格
  4. Windows c++ 读写注册表
  5. 基于sqlite3的词典功能
  6. 概论_第2章随机变量及其概率分布__离散型随机变量之二项分布
  7. mumu模拟器崩坏3分辨率_崩坏3:大佬亲自测试模拟器开启120帧,结果让所有玩家崩溃!...
  8. 生命本来就是一个奇迹
  9. 暗影格斗3为什么显示服务器无响应,暗影格斗3黑屏怎么办 暗影格斗3黑屏解决方法推荐...
  10. 实现对excel文件中多个sheet的拼接