gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:38 29 4
gpt4 key购买 nike

嗨,我是 Python 新手,当我为快速排序算法实现以下代码时,我得到了一个回溯:“IndexError:列表索引超出范围”。

有人可以帮我吗?我已经奋斗了一晚上了!

谢谢!

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)

最佳答案

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

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]

关于python3快速排序列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47244314/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com