在快速排序期间,Python while循环卡住了

时间:2018-08-12 08:30:21

标签: python while-loop quicksort

我正在尝试使用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)

1 个答案:

答案 0 :(得分:0)

如果列表的最后一个元素小于枢轴,则您的函数会将其追加到末尾并永久删除。实际上,即使所有剩余的元素都小于枢轴元素,也是如此。