二进制搜索和二进制排序有什么区别? (或者没有二进制排序之类的东西。)
我可以对未排序的列表执行二进制搜索吗? (我对此不太清楚,有人可以向我解释一下。)
如果我对未排序的列表执行二进制排序,然后对那个(现在)排序列表中的元素进行二进制搜索,那么整个过程的时间复杂度如何?
答案 0 :(得分:1)
不,你不能
二进制搜索的核心思想是通过值比较来减少搜索空间。
例如看[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
返回开始将为您提供第一个为假的元素。