c++ map 获取key列表_详解Python的列表查找方法——二分查找法与线性查找法

63b6ef3a7877979be436eef2e2bc8fb2.png

查找是在列表中查找一个特定元素的方法,在程序设计中十分常见;Python常用的列表查找方法有两种:线性查找和二分查找,下面进行分别介绍:

1、线性查找法

线性查找法是指顺序地将关键元素和列表中的每一个元素进行比较,从而得到列表中与关键元素相匹配的元素的下标,即找到关键元素在列表中的对应位置。如果没有与之相匹配的元素,则查找返回-1。

list1=[2,5,6,8,9,-5]def linearSearch(list1,key): for i in range(len(list1)): if key == list1[i]: return i return -1print(linearSearch(list1,-5))print(linearSearch(list1,3))

该例中,在list1中分别查找-5和3这两个元素,-5有对应的匹配元素,返回-5在list1中对应元素的下标5,3没有对应的匹配元素,查找函数返回-1。

49c606a7dfa726b2f3ae725057e3e2fe.png

可以看出,假如关键元素在列表比较靠后的位置,线性查找需要检测的元素会比较多,特别是对于大型列表而言,里面的元素可能是数以亿级的数量,这时线性查找的效率其实是很低的。

2、二分查找法:

二分查找法适用于已经事先排好序的列表,该方法是首先将关键元素与列表的中间元素进行比较,假如列表已经是升序排列的:

  • 如果关键元素小于列表的中间元素,那么只需在列表的前半部分继续查找
  • 如果关键元素等于列表的中间元素,那么查找结束
  • 如果关键元素大于列表的中间元素,那么只需在列表的后半部分继续查找

假如对一个有1024个元素的列表来说,最坏的情况下,二分查找只需要进行11次比较,而现行查找则需要进行1023次比较。

list1=[2,5,6,7,8,9,-5]def binarySearch(list1,key): low=0 high=len(list1)-1 while high>=low: mid=(low+high)//2 if key

该例中,在list1中分别查找5和3这两个元素,5有对应的匹配元素,返回5在list1中对应元素的下标1,3没有对应的匹配元素,查找函数返回-1。

4b4273d2886d7c4aaeb9c000c028f3a1.png

综上所述,对于少量元素的列表,用线性查找就够了,因为其代码更简洁;但是如果对于大型数据列表,就比较适合用二分查找了,只不过需要对列表提前排序。

欢迎点击右上方“关注”按钮,关注小编,获取更多Python图文或视频课程,如有疑问,欢迎大家在评论区留言,也可以私信小编。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值