二进制搜索与顺序搜索/收支平衡点

时间:2014-01-30 22:09:09

标签: sorting binary sequential

我真的在努力解决这个家庭作业问题。我的教授在解释任何事情上做得很糟糕。帮助

  

在排序列表然后使用二进制搜索与仅在未排序列表上使用顺序搜索之间存在权衡。选择取决于搜索列表的次数。假设在最坏的情况下顺序搜索需要n次比较,排序需要n * log n比较,而二进制搜索需要log n比较   在最坏的情况下(其中log是log base 2,正如我们已经讨论过的那样)。给定1024个元素的未排序列表(即log 1024 = 10),排序需要多少次搜索才值得?假设我们认为顺序搜索的平均情况需要进行n / 2次比较。现在s的盈亏平衡点是什么?

     

提示:为每种方法进行s搜索所需的比较次数写一个表达式;然后将它们设置为相等并求解s。

2 个答案:

答案 0 :(得分:2)

您正在比较执行初始排序所需的时间(费用:n*log(n))和后续二进制搜索(费用:log(n))。因此,如果您要搜索s次,您将支付初始n*log(n)以对列表进行排序,并为每个(二进制)搜索支付log(n)。也就是说:

c1 = (n*log(n)) + (s*log(n)) = (n+s)*log(n)

相反,如果您执行线性搜索,则没有“初始费用”,但每次搜索都会花费n,因此对于s次搜索:

c2 = s*n

显然,对于sn足够小,c2较小,因为没有这样的初始费用,但增长比{{1} }}。在某个时间点,c1c1会交叉。也就是说,c2

c1 = c2

嗯,你现在必须讨论上面的等式。这个情节应该告诉你一切:

enter image description here

答案 1 :(得分:1)

作为提示:完成排序n然后执行k二进制搜索所做的工作由

给出
  

n log n + k log n

和进行k次连续搜索所需的工作是

  

n k

如果n = 1,000,对于k的值,第二个数量是否小于第一个?

希望这有帮助!