python二分法

算法简介之二分法

一、什么是算法

算法的范围很大,只要是解决问题的思路都算算法。但不是所有的算法都是搞笑的,也有很多不合格的算法,可这并不影响算法的流行。因为算法的应用范围确实很广,几乎涵盖了我们生活中的方方面面: 推荐算法(抖音视频推送 淘宝商品推送)、成像算法(AI相关)

常见算法的原理以及为代码

二分法、冒泡、快拍、插入、推排、桶排、数据结构(链表 约瑟夫问题 如何链表是否成环)

算法的条件

输入性,输出性,明确性,有限性,有效性

二、二分法

二分法算是算法中最简单的算法,有很大的缺陷、但是面试的时候喜欢拿来考一考。

二分法有以下限制条件:

1、进行运算的数据值需要有序的。

2、运算的时候如果需要取得数据值是在两头的,反而会更加耗时

二分法的缺陷

针对开头结尾的数据 查找效率很低
"""
数据量太小不适合二分查找,与直接便利相比效率提升并不明显。
但有一个例外,就是数据之间的比较操作非常费时,比如数组中存储的都是组成长度超过100的字符串。
"""

代码

l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]
# 获取中间的索引, 这里通过整除来弄
def find(l1, target_num):
if len(l1) == 0:
print('没找到')
return
# 获取列表中的中间值// 遇到小数 取整
middle_index = len(l1) // 2
# 判断目标数据值与中间索引值的大小
if target_num > l1[middle_index]: # middle_index 是索引值
# 切片保留中间值的另一半:
right_l1 = l1[middle_index+1:]
print(right_l1)
# 针对右边一半的列表继续二分进行判断
return find(right_l1, target_num)
elif target_num < l1[middle_index]:
# 切片保留中间值左边的一半:
left_l1 = l1[:middle_index]
print(left_l1)
return find(left_l1, target_num)
else:
print('恭喜你找到了')
find(l1, 76)
posted @   性格如此w  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示