Python 算法 01--二分查找

liftword2个月前 (03-28)技术文章25


猜数游戏

在程序中预设一个 0-9 之间的整数,让用户通过键盘输入所猜的数,

如果大于预设的数,显示 “遗憾,太大了”;小于预设的数,显示 “遗憾,太小了”

如此循环,直至猜中该数,显示 “预测 N 次,你猜中了!”,其中 N 是用户输入数字的次数

1、Python 分析

● “预设一个 0-9 之间的整数” 可以使用 random 库中的 randint 函数

注意:randint (a,b) 区间是包含 a 和 b 的,而 range 函数左闭右合

● 用户键盘输入数字,使用 eval(input())

● 在确定循环次数时,我们用 for 循环,在不确定的时候用 while 循环

● 显示 “预测 N 次,你猜中了!”, 其中 N 可以使用 format 函数格式化

2、Python 代码

3、策略

● 简单查找:从 1 开始依次往上猜

每次猜测只能排除一个数字,如果数字是 100,那从 1 - 100 需要猜 100 次

● 二分查找:每次猜测中间的数字

在未猜测正确前,每次猜测都将余下的数字排除一半。


二分查找

数组list

● low 和 high 表示数组 list 的开始和结束

low = 0 # 数组开始

high = len(list) - 1 # 数组结束

● 只要范围没有缩小到只包含一个元素,就检查中间的元素

● 中间元素

mid = (low + high) // 2

如果 low + high 不是偶数,Python中// 向下取整


● Python 二分查找代码

● 二分查找的时间复杂度

当第 K 次查找到元素,N/(2^K) >= 1

我们计算时间复杂度是按照[最坏的情况]进行计算

所以二分查找的时间复杂度是log N (默认 log 的底数是 2)

注意:仅当列表是有序的时候,二分查找才管用


>>>Python算法 00--时间复杂度和空间复杂度

相关文章

如何对日志文件进行二分查找?二分查找工具timecat介绍

今天我要分享一个头条用于对日志文件进行二分查找的工具:timecat。项目地址是:https://github.com/fanfank/timecat安装方式很简单,只要你装了Python 2,那么可...

Python中如何使用二分法快速查找数据

平时我们会经常找东西,东西少,随便找下就可以找到了,当东西很多很多的时候,找起来就要花大量的时间。假如你平时摆放的东西很整齐、很有规律,那就方便多了,如果你对所有的东西都编号标记,那可能一下就找出来了...

【程序员常用十算法】二分查找法—5分钟掌握

【上期《ChatGPT写的vs我写的——快速排序算法》出来以后,有不少朋友都在感慨未来怎么办啊,是不是初级程序员这些岗位都可以被取代了?我觉得这是一体两面,可以理解为危机(被取代)、也可以理解为机遇(...

Python 常用算法:排序与查找

在 Python 编程的领域中,算法是解决各类问题的核心步骤与方法。排序和查找算法作为基础且常用的算法类型,在数据处理、搜索应用等诸多场景中发挥着关键作用。接下来,让我们深入了解几种常见的排序算法和查...

青少年Python编程系列36:排序算法和查找算法入门

上一节课我们已经讲了算法的基础知识,这节课我们讲一下算法中两个最为经典的类型:排序算法和查找算法。排序和查找我们之前直接使用列表的内置方法,那实现排序和查找最底层的原理是什么呢?我们正式开始这节课的内...