我正在尝试使用while循环在Python中编写quicksort函数,由于某种原因,如果我在每次迭代中不增加i,我的循环将导致sublime关闭(这不是我想要做的数组的索引0在循环期间可能会更改)。关于为什么可能会发生这种情况或我的while循环出了什么问题的任何想法?谢谢您的帮助!我打赌我只是在某个地方呆呆。
from random import randint
def quicksort(arr):
print(arr)
pivot = arr[randint(0, len(arr)-1)]
i = 0
while i < len(arr):
print('value', arr[i])
print('pivot', pivot)
if arr[i] < pivot:
arr.append(arr[i])
del arr[i]
else:
i += 1
print(arr)
print(arr)
arr1 = [3,86,5,75,2,58,6,4,9,7,87,2,1,6,9,90,65,5,1,890]
quicksort(arr1)
答案 0 :(得分:0)
如果列表的最后一个元素小于枢轴,则您的函数会将其追加到末尾并永久删除。实际上,即使所有剩余的元素都小于枢轴元素,也是如此。