You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否借助缓冲区实现完全原地迭代快排?及递归O(logn)转O(1)探讨

关于原地稳定排序与Logsort的探讨

注:允许使用大小固定、不随列表规模变化的辅助数组。未优化的Quicksort(快速排序)和Mergesort(归并排序)均为递归算法,占用O(logn)栈空间(归并排序合并步骤的O(n)空间不计入)。

在研究Block Merge sorts(块归并排序)的各类变体(包括原始论文版本、简化版Sqrtsort、Wikisort、Grailsort、Holy Grailsort)后,我尝试寻找原地稳定快速排序,发现了aphitorite开发的Logsort算法。

Logsort的核心特性(来自项目说明)

众所周知,Quicksort是一种O(n log n)复杂度的算法,通过O(n)复杂度的分区操作实现排序。这类分区操作可轻松实现原地执行(占用O(1)额外空间),但不具备稳定性,即无法保留相等元素的原有顺序。稳定Quicksort也可达到O(n log n)时间复杂度,但需额外O(n)空间实现稳定分区,不再属于原地算法。
Logsort是一款新颖实用的O(n log n)复杂度快速排序算法,兼具原地性与稳定性。该算法通过O(log n)空间实现O(n)时间复杂度的稳定分区,因此得名;尽管未达到最优O(1)空间,仍被多数人视为原地算法。与std::stable_sort这类O(n log² n)复杂度的知名原地稳定排序算法不同,Logsort具有渐近最优性。

待探讨的疑问

  • Logsort的栈空间占用极小,实际影响可忽略不计(例如2^40约等于1万亿),但能否借助缓冲区将任何因递归占用O(logn)内存的算法转换为占用O(1)内存的版本?
  • 能否利用缓冲区实现完全原地的迭代式快速排序?

内容的提问来源于stack exchange,提问作者Lamphiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 04:33:11