作为涉及内省排序实现的家庭作业的一部分,我被问到为什么使用堆排序而不是合并排序(或其他算法)。
Introsort是一种混合排序算法,可提供快速平均性能和(渐近)最佳最坏情况性能。它从快速排序开始,并在递归深度超过基于排序元素数量(的对数)的级别时切换到堆排序。(Wikipedia,检索2014年5月6日。)
我能想到的唯一原因是,heapsort是“就位”的……但是,我并不真正理解为什么这在这里很重要。
3
如果introsort是问题的一部分,则您必须先告诉我们它是什么,然后我们才能说什么。
—
2014年
我们只是被要求为介绍性排序编写一些伪代码,然后我们被问到为什么它使用堆排序而不是合并排序。
—
user672009 2014年
@ user672009在这种情况下,请写下其中任何一个的代码,然后查看发现的内容。原因可能与性能无关。
—
拉斐尔
我得出的结论是,由于Quicksort是在原地进行排序的,因此我们需要使用其他原地排序算法。但是我愿意接受输入。
—
user672009 2014年