【问题标题】:For inputs of size n, for which values of n does insertion-sort beat merge-sort? [closed]对于大小为 n 的输入,对于 n 的哪些值,插入排序优于合并排序? [关闭]
【发布时间】:2014-12-11 09:35:56
【问题描述】:

在《算法简介》(Corman) 一书中,练习 1.2-2 提出了一个关于比较插入排序和归并排序实现的问题。对于大小为 n 的输入,插入排序以 8n^2 步运行,而合并排序以 64n lg n 步运行;对于 n 的哪些值,插入排序优于合并排序?

虽然我对答案很感兴趣,但我更感兴趣的是如何一步一步找到答案(这样我就可以重复这个过程来比较任何两个给定的算法,如果可能的话)。

乍一看,这个问题似乎类似于在商业微积分中找到盈亏平衡点,这是我 5 年多前上的一门课,但我不确定是否会得到任何帮助。

谢谢





P/S 如果我的标签不正确,这个问题的分类不正确,或者这里滥用了一些其他约定,请将惩罚限制在最低限度,因为这是我第一次发布问题。

【问题讨论】:

  • 8n^2=64nlgn 的解决方案是n=44。所以对于 43 个或更少的元素使用插入排序,否则使用合并排序
  • @arunmoezhi 数字 8n^2 和 64nlogn 真的成立吗?还是它们只是问题陈述的假设值?
  • @zack 问题说明了这些值。

标签: algorithm sorting time-complexity mergesort insertion-sort


【解决方案1】:

既然你要找到插入排序何时胜过合并排序

8n^2<=64nlogn
n^2<=8nlogn
n<=8logn

解决n-8logn = 0你得到

n = 43.411

所以对于n&lt;=43,插入排序比合并排序效果更好。

【讨论】:

  • 感谢您的帮助,我无法为您投票,因为我不是 +15 的代表。有人投票吗? ;)
  • 您可以通过点击赞成票下方的绿色对勾来接受我的回答。
  • 谢谢大佬,顺便能告诉我日志的基础是什么吗?超级新的材料,我正在一个人的空闲时间学习。
  • 老实说,我并没有完全得到结局,尽管我认为这是因为我几乎忘记了所有的微积分(哈哈),所以我转而进一步询问了我重新发布的那部分的数学问题here 并被告知答案不正确,我引用“这不是真的:43.11 > 8*log(43.11) = 30.11。”这里有什么想法吗?
  • 这取决于问题,但一般情况下,归并排序的时间复杂度为 O(nlogn),对数基数为 2。您可以阅读归并排序以了解基数为何为 2。
猜你喜欢
  • 2019-12-06
  • 2011-01-18
  • 2011-04-23
  • 2023-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
相关资源
最近更新 更多