python - 二分查找和二分排序的区别
问题描述
二分查找和二分排序有什么区别?(或者没有二进制排序之类的东西。)
我可以对未排序的列表执行二进制搜索吗?(我对此有点清楚,有人可以向我解释一下。)
如果我对未排序的列表执行二进制排序,然后在该(现在)排序列表中对元素进行二进制搜索,整个过程的时间复杂度是多少?
解决方案
- 我可以在未排序的列表上执行二进制搜索吗?(我对此有点清楚,有人可以向我解释一下)
你不能,
二分搜索的核心思想是通过值比较来减少搜索空间。
例如查看 [1,2,3,4,5,6,7] 并且要搜索的元素是 5。在二分搜索中,我们在这种情况下查看中间元素 4,因为目标元素大于4 我们知道数组是排序的,我们只能查看右半部分 [5,6,7]
也可以在函数为 MONOTONOUS 的情况下实现二进制搜索,例如 [T , T , T , T , F , F , F] 您可以应用二进制搜索来使用此模板查找数组中的第一个 False
start=0, end=size
while(start<end)
if(condition)
end=mid
else
start=mid+1
return start
返回 start 会给你第一个错误的元素。
推荐阅读
- git - 我应该继续创建分支还是应该合并?
- javascript - 在nodejs中使用异步配置续集
- package - conda 骨架不生成 build.sh 和 bld.bat,只生成 meta.yaml
- c++ - 地图包装器获取值被覆盖
- google-apps-script - 达到止盈或止损后停止检查价格,谷歌表上的自定义功能与应用程序脚本
- c - 请有人告诉我为什么程序在进入循环的第一个元素后卡住了?
- google-apps-script - 如何将 OAuth 范围解析为 GSheet 并调用 GClassroom 函数,以便获取分配数据并发布到 GSheet?
- javascript - 使用 mongoose 和 API 填充 Mongo 数据库
- github - 在 GitHub 工作流程中获取当前日期和时间
- r - 为聚类制作距离矩阵