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

关于自定义栈排序代码的正确性、时间复杂度及优化方案咨询

代码正确性分析

你的代码存在多处逻辑错误和设计缺陷,无法正确完成列表排序:

  • 类属性污染问题:MIN和MAX是类级别的列表,而非实例属性。多次调用sort方法时,前一次排序的残留数据会直接干扰后续结果,导致输出完全错误。
  • 元素处理异常:每个元素会被尝试同时加入MIN和MAX,最终返回MIN+MAX会导致元素重复;同时存在元素无法被正确插入的情况,比如输入[3,1,2]时,元素2会被遗漏,最终结果丢失数据。
  • 逻辑分支覆盖不全:比如当MIN不为空,但num大于MIN[-1]时,没有对应的处理分支,该元素无法被加入MIN;MAX的处理也存在类似漏洞。
假设修正后的时间复杂度

如果忽略上述错误,假设逻辑是将元素插入到有序列表的正确位置(类似插入排序思路),那么时间复杂度为O(n²):

  • 外层循环遍历所有n个元素,时间开销O(n)。
  • 内层循环最坏情况下(比如输入是逆序),每个元素都要遍历整个MIN或MAX列表找插入位置,时间开销O(n)。
  • 加上Python列表切片拼接(如self.MIN = self.MIN[:ind] + [num] + self.MIN[ind:])的O(k)时间(k为列表长度),整体时间复杂度为O(n²)。
更优解决方案

常见高效排序算法的时间复杂度可达O(n log n),推荐优先使用:

  • Python内置排序:list.sort()方法和sorted()函数底层采用Timsort算法,结合了归并排序和插入排序的优势,实际性能拉满,绝大多数场景下都是最优选择。示例:
    # 返回新的排序列表
    sorted_result = sorted(my_list)
    # 原地修改列表排序
    my_list.sort()
    
  • 归并排序:基于分治思想,将列表拆分成子列表排序后合并,时间复杂度稳定O(n log n),适合大规模数据排序。
  • 快速排序:平均时间复杂度O(n log n),原地排序空间开销低,实际运行速度快,仅最坏情况会退化为O(n²)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:12:17