博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找算法
阅读量:5833 次
发布时间:2019-06-18

本文共 1285 字,大约阅读时间需要 4 分钟。

1 # 算法 2     # 查找算法 3     # 排序算法 4     # 最短路径算法 5     # 等等 6  7  8  9 # 二分查找算法  必须处理有序的10 11 # 如果有这样一个列表,让你从这个列表中找到66的位置,你怎么做?12 l = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 55, 60, 80, 90]13 14 # # 代码实现15 # def find(l, aim):16 #     mid_index = len(l) // 217 #     if l[mid_index] < aim:18 #         new_l = l[mid_index + 1 :]19 #         find(new_l, aim)20 #     elif l[mid_index] > aim:21 #         new_l = l[:mid_index]22 #         find(new_l, aim)23 #     else:24 #         print('找到了', mid_index, l[mid_index])25 #26 # find(l, 60)27 28 # 正确的二分法,第一个参数所查找的容器,第二个参数为要找的目标,第三第四为开始与结束位置29 def find(l, aim, start = 0, end = None):30     end = len(l) if end is None else end31     mid_index = (end - start) // 2 + start32     if start <= end:33         if l[mid_index] < aim:34             return find(l, aim, start = mid_index + 1, end = end )35         elif l[mid_index] > aim:36             return find(l, aim, start = start, end = mid_index - 1)37         else:38             print('扎到了', mid_index, l[mid_index])39             return mid_index40     else: # 找不到应该返回离这个数最近的一个数怎么样?41         print('找不到')42         return 043 44 l = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 55, 60, 80, 90]45 46 print(find(l, 60))  # 12
View Code

 

转载于:https://www.cnblogs.com/whylinux/p/9657762.html

你可能感兴趣的文章
甘肃发首版《3D打印职业教育教材》:校企合作育专才
查看>>
李娜入选国际网球名人堂 成亚洲第一人
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
jsp改造之sitemesh注意事项
查看>>
智能硬件的时代,嵌入式是否已经日薄西山
查看>>
SpringBoot-Shiro使用
查看>>
iOS 9.0之后NSString encode方法替换
查看>>
解决 ThinkPHP5 无法接收 客户端 Post 传递的 Json 参数
查看>>
ASMFD (ASM Filter Driver) Support on OS Platforms (Certification Matrix). (文档 ID 2034681.1)
查看>>
CRM Transaction处理中的权限控制
查看>>
[转]linux创建链接文件的两种方法
查看>>
python ipaddress模块使用
查看>>
文件权限
查看>>
busybox里的僵尸进程为何那么多
查看>>
python debug
查看>>
java 连接数据库之一个完整的函数
查看>>
mysql脚本
查看>>
OllyDBG 入门系列教学--让你瞬间成为破解高手
查看>>