递归来实现一个二分查找算法函数bi_search()
题目内容:
定义一个 prime() 函数求整数 n 以内(不包括n)的所有素数(1不是素数),并返回一个按照升序排列的素数列表。使用递归来实现一个二分查找算法函数bi_search(),该函数实现检索任意一个整数在 prime() 函数生成的素数列表中位置(索引)的功能,并返回该位置的索引值,若该数不存在则返回 -1。
输入格式:
第一行为正整数 n
接下来若干行为待查找的数字,每行输入一个数字
输出格式:
每行输出相应的待查找数字的索引值
输入样例:
10
2
4
6
7
输出样例:
0
-1
-1
3
#bi_search.py
# coding: utf-8import math
def isprime(n):#判断素数,若是,返回True;否则,返回Falseif n ==2:return Trueelif n >2 :for i in range(2,int(math.sqrt(n))+1):if n%i == 0:return Falsereturn Trueelse:return False#print(isprime(117))def primelist():num = eval(input())primes= []for n in range(2,num):if isprime(n):primes.append(n)return primesdef bi_search(primes,low,high,n):#low = 0#high = len(primes)-1mid = int((low + high)/2)if low <= high: if n == primes[mid]:return midelif n > primes[mid]:return bi_search(primes,mid+1,high,n)else:return bi_search(primes,low,mid-1,n)else:return -1primes = primelist()
search = []
while True:n = eval(input())if n == -1:breakelse:search.append(n)
for n in search: print( bi_search(primes,0,len(primes)-1,n))
递归来实现一个二分查找算法函数bi_search()相关推荐
- 考研数据结构之查找(9.8)——练习题之编写一个函数利用二分查找算法在一个有序表中插入关键字k并保持表的有序性(C表示)
题目 编写一个函数,利用二分查找算法在一个有序表中插入一个关键字k,并保持表的有序性. 分析 先在有序表中利用二分查找算法查找关键字值等于或小于k的结点,m指向正好等于k的结点或l指向关键字正好大于k ...
- python函数教程:Python递归函数 二分查找算法实现解析
这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...
- python递归实现二分查找_python二分查找算法的递归实现方法
本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...
- 二分查找算法的两种实现方式:非递归实现和递归实现
二分查找的条件是对一组有序数组的查找,这一点很容易忘记,在使用二分查找的时候先要对数组进行排序. 先说一下二分查找的思路:一个有序数组,想要查找一个数字key的下标,首先算出中间下标mid,利用mid ...
- 二分查找算法递归实现
二分查找(Binary Search),又称折半查找,是一种效率较高的查找算法.折半查找需要线性表采用顺序存储结构,即查找的对象必须是一个有序序列.如{1,2,3,4,5...},{10 ,8,6,4 ...
- python递归实现二分查找_python二分查找算法的递归实现
本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...
- 二分查找算法(递归与非递归两种方式)
首先说说二分查找法. 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标. 采用非递归方式完成二分查找法.java代码如下 ...
- php二分查找算法时间复杂度,一个运用二分查找算法的程序的时间复杂度是什么...
一个运用二分查找算法的程序的时间复杂度是"对数级别".二分查找是一种效率较高的查找方法,算法复杂度即是while循环的次数,时间复杂度可以表示"O(h)=O(log2n) ...
- 二分查找算法应用-实现求平方根函数
使用二分查找算法,尽可能的逼近求解平方根.算法的思路很简单:设置三个标识:left=0,right=x(x为输进去的被开方数) mid=(left+right)/2,然后用mid*mid-x的绝对值去 ...
最新文章
- 大掌门2显示服务器繁忙,《大掌门2》二周年庆典开启 真传弟子潇洒归来
- Java单元测试的意义_单元测试重要意义及方法介绍
- windows10环境运用SSH和SwitchySharp自由翱翔
- 一文让你彻底理解 Java HashMap
- 家用计算机配置,家用计算机怎么配置?
- Atitit.判断元素是否显示隐藏在父元素 overflow
- 使用nginx反向代理解决前端跨域问题
- 感谢蜂窝教育,四个月的学习,让我改变了
- 推荐——《梦想金山》
- raft-rs 示例程序源码解读
- 红日安全ATT&CK靶机实战系列之vulnstack1
- 有功功率和无功功率的超前滞后
- MPSOC之8——启动及错误处理
- 各大门户免费登录入口
- 字符串库函数(1)Strlen,strcpy,strcat,strcmp
- stm32cubeMX配置人体感应器SR505
- 存储系统 - IOPS与带宽的关系
- PEP8 - Python 代码风格指南中英对照
- 月光族的最佳财务规划
- 饭否android客户端,fanfou(饭否) android客户端 代码学习二