Sorting 二进制搜索与顺序搜索/盈亏平衡点

Sorting 二进制搜索与顺序搜索/盈亏平衡点,sorting,binary,sequential,Sorting,Binary,Sequential,我真的很难回答这个家庭作业问题。我的教授解释任何事情都做得很糟糕。帮忙 对列表进行排序,然后使用二进制搜索与仅对未排序的列表进行顺序搜索之间存在一种折衷。选择取决于搜索列表的次数。假设在最坏的情况下,顺序搜索需要n个比较,排序需要n*logn个比较,二进制搜索需要logn个比较 在最坏的情况下(如我们所讨论的,log是log base 2)。给定1024个元素的未排序列表(即log1024=10),需要多少次搜索才能进行排序?假设我们考虑顺序搜索的平均情况需要N/2比较。现在s的盈亏平衡点是什么

我真的很难回答这个家庭作业问题。我的教授解释任何事情都做得很糟糕。帮忙

对列表进行排序,然后使用二进制搜索与仅对未排序的列表进行顺序搜索之间存在一种折衷。选择取决于搜索列表的次数。假设在最坏的情况下,顺序搜索需要n个比较,排序需要n*logn个比较,二进制搜索需要logn个比较 在最坏的情况下(如我们所讨论的,log是log base 2)。给定1024个元素的未排序列表(即log1024=10),需要多少次搜索才能进行排序?假设我们考虑顺序搜索的平均情况需要N/2比较。现在s的盈亏平衡点是什么

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


您正在比较执行初始排序(成本:
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
显然,对于足够小的
s
n
c2
较小,因为没有这样的初始成本,但它的增长速度比
c1
快。在某一点上,
c1
c2
将交叉。也就是说,
c1=c2

                                                                     n * log(n)
s * n = (n + s) * log(n) --> s * (n - log(n)) = n * log(n) --> s = ------------
                                                                     n - log(n)
你现在必须讨论上面的等式。这个情节应该告诉你一切:


作为提示:对n进行排序,然后对k进行二进制搜索的工作如下所示

n log n+k log n

进行k个顺序搜索所需的工作是

n k

如果n=1000,第二个量的k值比第一个量的k值小多少


希望这有帮助

这个问题似乎离题了,因为要求家庭作业帮助的问题必须包括你迄今为止为解决问题所做工作的摘要,以及你解决问题的困难的描述。如果我的问题离题了,我道歉。我只是想澄清一下:我在一个编程入门课上,被问到一个数学问题。我的数学知识非常有限,甚至不知道从哪里开始,所以把问题解析出来对我非常有帮助。你的图表比较了最坏情况下的性能。使用预期成本更有意义,尤其是在寻找折衷阈值时。分析更加复杂,取决于所涉及的分布。这不会对答案有太大的改变,但会稍微改变一点权衡的门槛。