c - 通过队列实现快速排序?

标签 c sorting stack queue quicksort

我可以使用队列实现快速排序吗?
我只找到这篇文章https://www.quora.com/Can-we-use-a-queue-in-quicksort-in-C .
这篇文章是否正确?
如果是,为什么教科书总是只实现堆栈快速排序或递归方法?
因为这个问题的资料很少,所以在这里问一下。

最佳答案

缓存性能差

有了栈,我们有足够的时间局部性,而有了队列,它就完全丢失了。我们基本上是尝试在队列方法中以广度优先搜索方式对数组进行排序。

编辑(来自 Will Ness 的回答):对于更大的数组 (>RAM),队列方法甚至不起作用,因为它需要 O(n) 空间来对大小为 n 的数组进行排序.而基于堆栈的方法只需要 log n 空间。两者的所有理论时间复杂度都是一样的。

关于c - 通过队列实现快速排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666714/

相关文章:

recursion - 堆栈的 Lisp 递归问题

c - 我可以在 C 程序中同时打开多少个临时文件?

c - 为什么优化会无缘无故地改变我的指针地址?

javascript - SpiderMonkey 中是否有与 PyCapsule 等效/相似的东西?

python - python 中的元组排序

c++ 为什么 .ignore() 函数不能正常工作?

c - #define FOO(x,c) (void)( { c = ( x ) ; }) 是做什么的?

json - 如何在 go lang 中对 map[string]interface{} 类型进行多重排序?

java - 消除Java排序比较中的越界错误

java - 在 Java 中复制 java.util.Stack