我被要求做快速排序,以插入排序终止。但是我不明白临界值的含义。我需要有人用实际示例来详细说明这个概念。
答案 0 :(得分:0)
很难确保没有看到确切的要求说明。
但是,我认为这意味着您应该使用小于一定大小(“截断”)的插入排序(O(N^2)
)和大于该大小的插入排序(O(NlogN)
)。
它们可能意味着您需要对输入数组的大小进行此测试。
它们还可能意味着您实现了混合排序,并且在快速排序分区大小小于阈值时在子数组上使用了插入排序。
这两种解释都是合理的。
我需要有人用真实的例子来阐述这个概念。
我怀疑您需要一些示例来理解这一点。如果您了解插入排序和快速排序算法,那么从概念上讲这很简单。 (而且,如果您不了解它们,那么您可以从数据结构和算法教科书开始到很多地方阅读它们。)
答案 1 :(得分:0)
某些算法在渐近性上优于其他算法。在您的情况下,Quicksort的渐近运行时间为O(N(logN)),而插入排序的渐近运行时间为O(N ^ 2)。
这意味着对于较大的N值,Quicksort的运行速度比插入排序要快。
但是,对于较小的N值,插入排序可能会运行得更快。因此,您可以将Quicksort的实际运行时间与较小数组大小的插入排序结合使用,以优化其运行时间。
Quicksort是一种递归算法,它将原始数组分解为较小的数组,并在每个子数组上递归运行。使用插入排序进行切除意味着,一旦数组大小小于某个恒定的切除大小,便可以使用插入排序对这些小的数组进行排序,而不是继续递归。