为什么mergeSort比在java中插入更快

时间:2014-03-16 18:47:04

标签: java mergesort insertion

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

1 个答案:

答案 0 :(得分:3)

因为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次操作,而MergeSort仅执行6 000 000次,使其快166 166次。

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

请注意,上述数字和时间复杂性适用于普通情况。