python3快速排序列表索引超出范围

2024-09-28 13:18:09 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我是Python新手,当我为快速排序算法实现以下代码时,我得到了一个回溯:“IndexError:list index out of range”。你知道吗

谁能帮帮我吗。我挣扎了一整夜!你知道吗

谢谢!你知道吗

def quicksort(array,l,r):
    n = len(array)
    if n == 1 or n == 0:
        return array
    else:
        p = array[l]
        i = l + 1
        for j in range(l+1, r):
            if array[j] < p:
                array[i], array[j] = array[j], array[i]
                i = i + 1
        array[l], array[i-1] = array[i-1], array[l]
        array[l:i-1] = quicksort(array[l:i-1],l,i-1)
        array[i:r] = quicksort(array[i:r],i,r)
        return array

testarray = [1,3,4,5,2]
sortedarray = quicksort(testarray,0,5) 

Tags: of代码算法indexreturnif排序range
1条回答
网友
1楼 · 发布于 2024-09-28 13:18:09

修正了错误,但我认为你的排序逻辑是错误的

def quicksort(array,l,r):
    n = len(array)
    if n == 1 or n == 0:
        return array
    else:
        p = array[l]
        i = l + 1
        for j in range(1, r-1):  # r is length of array; so range should be one less
            if array[j] < p:
                array[i], array[j] = array[j], array[i]
                i = i + 1
        array[l], array[i-1] = array[i-1], array[l]
        array[l:i-1] = quicksort(array[l:i-1],l,i-1)
        array[i:r] = quicksort(array[i:r],i,r)
        return array

testarray = [1,3,4,5,2]
sortedarray = quicksort(testarray,0,5) 

print(sortedarray)

输出

[1, 3, 2, 4, 5]

相关问题 更多 >

    热门问题