选项D是正确的。
解释如下:
A. 快速排序在平均情况下确实是一种非常高效的排序算法,其平均时间复杂度为O(n log n),但是在最坏情况下(例如数组已经是有序的或者完全逆序的),快速排序的时间复杂度会退化到O(n^2)。至于辅助空间,快速排序通常需要O(log n)的栈空间用于递归调用,这不是所有排序方法中最少的。
B. 在快速排序中,可以用队列替代栈,但这样会改变算法的本质,使其不再是快速排序。通常情况下,快速排序利用递归实现,递归隐式地使用了系统栈。
C. 快速排序的空间复杂度通常是O(log n),这是因为递归调用的深度是log n。但在最坏的情况下,如果每次分区都非常不平衡,空间复杂度会退化到O(n)。
D. 快速排序在待排序的数据随机分布时效率最高,这是因为在这种情况下,每次分区都能较为平均地划分数据,使得递归树的深度最小,从而使得总的比较和交换次数最少。
因此,正确的答案是D。
登录后提交答案