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

符合C++ std::stable_sort复杂度要求的算法及所需额外内存是多少?

std::stable_sort 相关问题解答

对应O(n log n)复杂度的排序算法类型

  • 满足要求的是归并排序类算法,该类算法天然具备排序稳定性,即不会改变相等元素的原有相对顺序,常规非原地实现的时间复杂度恰好为O(n log n),符合std::stable_sort的接口约束。
  • 当无法拿到足够额外内存时,std::stable_sort会退化为原地稳定排序实现,时间复杂度升高到题目中提到的O(n (log n)²)。

官方规定的额外内存容量要求

要实现O(n log n)时间复杂度,std::stable_sort需要的额外内存大小为与待排序序列长度相等的存储空间,即空间复杂度为O(n),其中n为待排序的元素总个数。

主流标准库的通用实现逻辑为:调用std::stable_sort时先尝试申请大小等于待排序序列总容量的临时缓冲区,申请成功则走归并排序逻辑,申请失败则切换到低空间需求、高时间复杂度的原地稳定排序分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:24:03