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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构