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

Python实现快速排序后数组未排序,请求问题排查与解决

问题排查与修复

你的快速排序实现存在两个关键问题,导致数组无法正确排序:

1. swap 函数完全无效

Python中函数参数传递是传对象引用,但你写的swap函数只是交换了局部变量x和y的值,根本不会修改原数组里的元素——因为你传入的是数组元素的副本,而非元素的索引或数组本身。

修复方案:

删掉单独的swap函数,在需要交换的位置直接操作数组:

# 替换原swap调用,直接交换数组内元素
array[a], array[b] = array[b], array[a]

2. quicksort 函数返回变量错误

quicksort的参数是arr,但你最后返回的是全局变量array。虽然当前场景下变量名刚好重合,但这是逻辑错误,应该返回传入的arr参数。

修复后的完整代码

def partition(array, left, right):
    x = array[right]
    left_pointer = left
    for right_pointer in range(left, right):
        if array[right_pointer] <= x:
            array[right_pointer], array[left_pointer] = array[left_pointer], array[right_pointer]
            left_pointer += 1
    array[left_pointer], array[right] = array[right], array[left_pointer]
    return left_pointer


def quicksort(arr, left, right):
    if left < right:
        pivot = partition(arr, left, right)
        quicksort(arr, left, pivot - 1)
        quicksort(arr, pivot + 1, right)
    return arr


array = [2, 6, 5, 3, 8, 7, 1, 0]
n = len(array) - 1
print(array)
print(quicksort(array, 0, n))

运行后会输出正确排序的数组:[0, 1, 2, 3, 5, 6, 7, 8]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:40:34