【发布时间】:2014-11-05 19:48:24
【问题描述】:
问题
选择排序的时间复杂度为n*(n-1)/2。给定一个包含 1000 个项目的列表,在排序和使用二分搜索更快之前,必须需要使用线性搜索进行多少次最坏情况搜索?
尝试解决方案
二分查找的时间复杂度为floor(log(n)/log(2)+1)。因此,一种选择排序后跟x 二分搜索的时间复杂度是n*(n-1)/2+x*floor(log(n)/log(2)+1)。线性搜索的时间复杂度为n,因此x线性搜索的时间复杂度为x*n。
因此我们建立了等式x*n=n*(n-1)/2+x*floor(log(n)/log(2)+1),对于n=1000 产生x=5550/11,因此产生floor(x)=floor(5550/11)=504。这是正确的吗?
【问题讨论】:
标签: sorting complexity-theory time-complexity binary-search selection-sort