python二分法代码_Python实现二分法检索(binary search)

news/2024/7/7 11:07:10

二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中。

首先将给定值key与字典中间位置上元素的关键码(key)比较,如果相等,则检索成功;

否则,若key小,则在字典前半部分中继续进行二分法检索;

若key大,则在字典后半部分中继续进行二分法检索。

这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。

偶数个取中间2个其中任何一个作为中间元素;

二分法检索是一种效率较高的检索方法,要求字典在顺序表中按关键码排序。

items = [1,2,3,4,5,6,7,8,9,10,11,

12,14,14,15,16,17,18,19,20]

def binSearch(lst, x):

i = 0

j = len(lst)

while i != j:

m = (i + j) // 2

if x == lst[m]:

return m

if x < lst[m]:

j = m

else:

i = m + 1

return None

print(binSearch(items, 1)) # 0

print(binSearch(items, 7)) # 6

print(binSearch(items, 19)) # 18


http://www.niftyadmin.cn/n/3091682.html

相关文章

JAVA NIO buffer (知识三)

java nio 里的buffer是缓存数据&#xff0c;通常缓冲区是一个数组&#xff0c;字节数组&#xff0c;也可以是别的类型。最常用的就是bytebuffer&#xff0c; 还有一些其它的类型&#xff1a; charbuffer&#xff0c; shortbuffer, intbuffer, longbuffer, floatbuffer, doubleb…

python语言可以处理数据文件吗_对于Python语言进行处理文件解读

如何在Python语言中复制和删除文件&#xff0c;以及怎样将一个完整的文件路径分解成目录部分和文件名部分&#xff0c;***&#xff0c;我们讲解目录的创建&#xff0c;以及如何在目录树中移动目录并处理文件。 对于文件和目录的处理&#xff0c;虽然可以通过操作系统命令来完成…

java内存区域与对象的访问

我们都知道&#xff0c;在学习java的时候&#xff0c;有一个东西是特别重要的&#xff0c;那就是java内存的划分&#xff0c;以及对象的访问是如何进行的&#xff0c;下面是我自己在一些书籍上整理的&#xff0c;学完了之后感觉特别有用&#xff01;&#xff01;&#xff01; …

mysql5.6.20配置文件my.cnf参数详解

服务器为硬件dell-R710,硬盘为双SSD硬盘130G&#xff0c;服务器有两颗CPU&#xff0c;单颗cpu为12核&#xff0c;服务器在安装系统时CPU开启了超线程。逻辑cpu为48核。 此服务器为单纯的mysql服务器&#xff0c;此配置文件的参数主要是供笔者平时优化my.cnf作为参考。广大读者切…

java多线程中的等待唤醒机制--多生产者多消费者问题

在java多线程中&#xff0c;等待唤醒机制是最经典的也是最能够体现java多线程中的线程安全的问题&#xff0c;在写等待唤醒机制的时候&#xff0c;我们要先去了解什么是等待唤醒机制 等待唤醒机制就是指在多个线程进行并发的去操作同一个资源的问题&#xff0c; 以生产馒头和…

python作业代做_代做MATH 6141作业、代写Python课程设计作业、代做algorithms作业、代做Python编程作业...

代做MATH 6141作业、代写Python课程设计作业、代做algorithms作业、代做Python编程作业 日期&#xff1a;2018-12-05 11:11 Coursework 2: MATH 3018/MATH 6141 - Numerical methods Due: 13 December 2018 In this coursework you will implement given numerical algorithms.…

偏门套路:每天被动吸引150+精准淘宝粉

网上关于引流技巧的文章五花八门&#xff0c;看得你热血澎湃&#xff0c;但往往搞一两天大多数人就放弃了&#xff0c;甚至看完后根本没去操作。最后还抱怨&#xff1a;为什么我看了那么多东西还是赚不到钱!虽然我十分鄙视这种浮躁的心态&#xff0c;但也能够理解和体谅大家。因…

使用hibernate中的hql进行分页设置setMaxResults(int a)出错

今天在自己写项目的时候在进行hibernate分页的时候设置setMaxResults(int a)的时候一直出现错误 org.hibernate.exception.SQLGrammarException: could not execute queryat org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)at org.hibernate.e…