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

Python实现quickSort时内部打印有序但返回数组未排序问题求助

快速排序函数返回正确但原数组未更新的问题解决

你的问题根源很简单:没有接收函数返回的排序后数组,原变量array根本没被修改。

原因解释

Python中,虽然列表是可变对象,但你在函数里执行array = quickSort(left) + pivot + quickSort(right)时,是创建了一个全新的列表对象,而非修改传入的原列表。函数最后返回了这个排序好的新数组,但你调用时只写了quickSort(array),没有把返回值赋值给原变量,所以原数组始终是初始的未排序状态。

修复方案

只需要在调用函数时,将返回值重新赋值给原变量即可:

def quickSort(array):
    if len(array) <= 1:
        return array

    p = 0  # pivot
    pointer = p + 1
    left = []
    pivot = []
    right = []
    pivot.append(array[p])
    
    # 分割数组为三个部分
    while pointer < len(array):
        if array[pointer] < array[p]:
            left.append(array[pointer])
        elif array[pointer] > array[p]:
            right.append(array[pointer])
        else:
            pivot.append(array[pointer])
        pointer += 1
    
    array = quickSort(left) + pivot + quickSort(right)
    return array
    
array = [7,5,8,1] 
array = quickSort(array)  # 接收排序后的返回值
print(array)  # 输出:[1, 5, 7, 8]

你的排序逻辑本身是正确的,内部打印的array是函数内生成的新排序数组,只要接收返回值,外部就能得到正确的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:50:32