【问题标题】:why mergeSort faster than insertion in java为什么mergeSort比java中的插入快
【发布时间】:2014-03-16 18:47:03
【问题描述】:

我使用 int 插入和 int mergeSort 在 java 中编写了一个代码。还 字符串插入和字符串合并排序。 我的问题是为什么 mergeSort 总是更快?

【问题讨论】:

  • 因为它做的工作更少。见维基百科

标签: java mergesort insertion


【解决方案1】:

因为 InsertionSort 的时间复杂度为 O(n^2),而 MergeSort 的时间复杂度为 O(nlogn)。

Have a look here 用于所有排序算法的简单比较。你可以阅读更多hereherehere

举个简单的例子,如果你有 100 个元素要排序,InsertionSort 将执行 100^2 = 10 000 次操作对其进行排序,而 MergeSort 将执行 100*log(100) = 100*2 = 200 次操作,使其速度提高 50 倍。

这对于大型数据集变得非常重要。当对包含 1 000 000 个对象的数组进行排序时,InsertionSort 将执行 1 000 000 000 000 次操作,而 MergeSort 将仅执行 6 000 000 次,使其速度提高了 166 666 倍。

在上述情况下,假设您使用的计算机每秒可以执行 10 亿次操作,则 InsertionSort 需要 17 分钟才能对它们进行排序,而 MergeSort 将在 6 毫秒内完成。

请注意,上述数字和时间复杂度适用于一般情况。

【讨论】:

  • 这不是真正的答案!
  • 对我来说似乎是一个正确的答案。
猜你喜欢
  • 2019-03-25
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多