我应该是一个简单的快速排序实现,但它返回一个超出递归深度错误,我正在一个少于30个元素的列表上测试它。此外,我的实现是在几天前制作的10,000个列表,我唯一改变的是将它从一个类转移到一个全局函数。有谁看到可能导致这种情况的原因?
def quickSort(m, left, right):
if len(m[left:right]) <= 1:
return m
pivot = m[left]
i = left + 1
j = left + 1
for j in range(j, right):
if m[j] <= pivot:
m[j], m[i] = m[i], m[j]
i += 1
m[left], m[i-1] = m[i-1], m[left]
m = quickSort(m, left, i)
m = quickSort(m, i, right)
return m
答案 0 :(得分:2)
你的一个递归调用导致异常(正如你可能已经猜到的那样:-),还要注意你对列表进行排序,这样就不需要返回列表了
def quickSort(m, left, right):
if right - left <= 1:
return
pivot = m[left]
i = left + 1
j = left + 1
for j in range(j, right):
if m[j] <= pivot:
m[j], m[i] = m[i], m[j]
i += 1
m[left], m[i-1] = m[i-1], m[left]
quickSort(m, left, i-1)
quickSort(m, i, right)