我看到的: 首先我阅读了这两篇其他的SO帖子
但是,那里的答案对我来说不够具体。
从这两篇文章的答案中,他们主要指出归并排序和快速排序可能会变慢,因为递归函数调用会增加额外的开销。但我想知道特定的阈值7是如何设置的?
我的问题:
我想知道为什么在大约7个元素的情况下,二次排序算法(如插入排序)比O(nlogn)
排序算法(如快速排序或归并排序)更快。
- 在小的子数组上使用插入排序。对于微小的子数组来说,归并排序的开销太大了。
- 当元素数量小于 ~7 时,切换到插入排序。
我从普林斯顿大学讲义幻灯片中获取了这个信息,我认为这是一个足够可靠的来源。请查看第11张幻灯片,在“Mergesort: Practical Improvements”部分下面。
如果您的回答包括数学证明示例,我将非常感激。