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

设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

代码:

n, x = map(int, input().split(' '))
list_nums = input().split(' ')
a = -1
b = -1
for i in range(0, len(list_nums)):list_nums[i] = int(list_nums[i])
if x < list_nums[0]:print('-1 0')
elif x > list_nums[n - 1]:print('{} {}'.format(n - 1, n))
else:if x in list_nums:a = list_nums.index(x)b = list_nums.index(x)else:for i in range(0, len(list_nums)):if list_nums[i] > x:a = i-1b = ibreakprint('{} {}'.format(a, b))

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

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

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

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

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

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

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

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

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

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

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

  6. python实现黄金分割搜索算法+动态展示

    python实现黄金分割搜索算法+动态展示 前言 要求 黄金分割搜索算法原理 伪代码 代码编写 动态结果 python代码 前言 数值算法是跟数学关系比较密切的一门课程,主要是用计算机程序实现一些数学 ...

  7. Python查找-二分查找

    Python查找-二分查找 二分查找 折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务. 它的基本思想是,将n个元素分成个数大致相 ...

  8. python实现二分查找(折半查找)算法

    python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...

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

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

最新文章

  1. 【Android 应用开发】Android之Bluetooth编程
  2. 《分布式操作系统》知识点(22~28)四
  3. GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean
  4. [从C到C++] 1.3 C++布尔类型(bool)
  5. 工作流Flowable实战篇
  6. Django1.7如何配置静态资源访问
  7. FreeSwitch WINDOWS无法支持H264
  8. 小米平板2 Windows刷回MIUI9线刷教程(2019)
  9. win10开机的微软服务器,win10系统开机登录微软账户的操作方法
  10. PHP 开发者应了解的 24 个库
  11. 163邮箱注册怎么用,有哪些常用的邮箱使用技巧!
  12. 猿创征文|我的Python成长之路
  13. 频率、周期、角频率的概念
  14. 王劲说无人车是他的终身事业,他要重回行业一线!
  15. Docker nginx部署多个web静态资源,且隐藏端口
  16. 程序员不修改Bug,我们该怎么办??
  17. 学习STM32日志(1):JLink OB仿真器常见问题与解决方法
  18. html5添加flash动画效果,霸气的HTML5 7款无Flash HTML5动画特效
  19. centos 无线网络连接
  20. mysql5.7递归_Mysql5.7自定义函数递归报错1424 Recursive stored functions and triggers are not allowed...

热门文章

  1. C++通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃? https://www.zhihu.com/question/30838092/answer/49623765
  2. java 标签云_javascript实现动态标签云
  3. JavaScript的十个思维导图
  4. (开源)STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示
  5. 连锁酒店无线全覆盖,距离不再是问题!!!
  6. Ubuntu常见问题1: Temporary failure resolving ‘us.archive.ubuntu.com‘
  7. js 数组对象凭借_js数组push多个对象
  8. 为什么数据库可以查询到值,java代码里面返回为null值
  9. 从零开始自学vue3笔记(二):项目结构与启动顺序
  10. 移动4G的前景不容乐观