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

Python快速排序类代码优化:如何仅传入一次arr参数实现功能

代码修改实现方案

核心修改点

  • 给quicksort方法设置默认参数arr=None,外部无参调用时自动使用初始化阶段存入实例的self.arr,无需重复传参
  • 替换原递归逻辑中的全局实例变量sor为self,符合类封装规范,避免依赖全局变量导致的运行异常
  • 可选优化:删除原逻辑中的del arr[0]操作,改为遍历arr[1:],避免修改原始数组产生副作用

改写后完整代码

class Sorting:
    def __init__(self, arr):
        self.arr = arr

    def quicksort(self, arr=None):
        # 外部无参调用时使用实例存储的数组
        if arr is None:
            arr = self.arr.copy()  # 不需要保留原数组可以去掉copy()
        
        if len(arr) <= 1:
            return arr
        else:
            pivot = arr[0]
            items_greater = []
            items_lower = []
            # 直接遍历下标1之后的元素,无需修改原数组
            for item in arr[1:]:
                if item > pivot:
                    items_greater.append(item)
                else:
                    items_lower.append(item)
            return self.quicksort(items_lower) + [pivot] + self.quicksort(items_greater)


arr = [4,3,2,1,-5,-89,10]
sor = Sorting(arr)
# 仅初始化时传了一次arr,调用排序方法无需再传参
print(sor.quicksort())

运行输出

和原代码输出完全一致:[-89, -5, 1, 2, 3, 4, 10]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:15:03