Python 3 的查找操作及其时间复杂度

  •         列表的 in 是 o(n)
  •         字典、集合、双向队列的 in 是 o(1)

  •         str.find(str, beg=0, end=len(string)) 找不到则返回-1,可以指定 beg(开始) 和 end(结束) 范围。
  •         str.index, list.index 找不到则报错

列表只有index,index要报错。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python中二分查找的思想是通过将有序数组分为左右两个部分,然后根据目标元素与中间元素的比较结果,缩小查找范围。具体步骤如下: 1. 确定起始位置left和末尾位置right,初始时left为数组的第一个元素的索引,right为数组的最后一个元素的索引。 2. 在循环中,计算中间位置mid,通过将left与right相加并除以2得到mid。 3. 比较arr[mid]与目标元素的大小关系: - 如果arr[mid]等于目标元素,表示找到了目标元素,返回mid作为目标元素在数组中的索引。 - 如果arr[mid]小于目标元素,表示目标元素可能在mid的右侧,将左边界left更新为mid+1。 - 如果arr[mid]大于目标元素,表示目标元素可能在mid的左侧,将右边界right更新为mid-1。 4. 继续循环,直到找到目标元素或者查找范围为空(即left大于right),此时算法结束,返回查找失败的结果-1。 通过二分查找的思想,可以高效地在有序数组中定位特定元素。这种算法的时间复杂度为O(log n),比线性搜索的时间复杂度O(n)更高效。因此,在需要频繁进行查找操作的场景下,可以考虑使用二分查找算法来提高搜索效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [使用Python实现二分查找算法及其应用场景详解](https://blog.csdn.net/RabbitTuzi/article/details/131338291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值