排序算法的临界值是多少?

时间:2018-10-08 05:52:10

标签: java data-structures

我被要求做快速排序,以插入排序终止。但是我不明白临界值的含义。我需要有人用实际示例来详细说明这个概念。

2 个答案:

答案 0 :(得分:0)

很难确保没有看到确切的要求说明。

但是,我认为这意味着您应该使用小于一定大小(“截断”)的插入排序(O(N^2))和大于该大小的插入排序(O(NlogN))。

  • 它们可能意味着您需要对输入数组的大小进行此测试。

  • 它们还可能意味着您实现了混合排序,并且在快速排序分区大小小于阈值时在子数组上使用了插入排序。

这两种解释都是合理的。


  

我需要有人用真实的例子来阐述这个概念。

我怀疑您需要一些示例来理解这一点。如果您了解插入排序和快速排序算法,那么从概念上讲这很简单。 (而且,如果您不了解它们,那么您可以从数据结构和算法教科书开始到很多地方阅读它们。)

答案 1 :(得分:0)

某些算法在渐近性上优于其他算法。在您的情况下,Quicksort的渐近运行时间为O(N(logN)),而插入排序的渐近运行时间为O(N ^ 2)。

这意味着对于较大的N值,Quicksort的运行速度比插入排序要快。

但是,对于较小的N值,插入排序可能会运行得更快。因此,您可以将Quicksort的实际运行时间与较小数组大小的插入排序结合使用,以优化其运行时间。

Quicksort是一种递归算法,它将原始数组分解为较小的数组,并在每个子数组上递归运行。使用插入排序进行切除意味着,一旦数组大小小于某个恒定的切除大小,便可以使用插入排序对这些小的数组进行排序,而不是继续递归。