Я пытаюсь реализовать Quicksort с помощью Python. Это мой код:Быстрый алгоритм ошибки Python
import random
def quickSort(lst):
randomIndex = random.randint(0,len(lst)-1)
pivot = lst[randomIndex]
greater = []
less = []
equal = []
if len(lst) > 1:
for num in lst:
if num > pivot:
greater.append(num)
elif num == pivot:
equal.append(num)
else:
less.append(num)
return quickSort(less)+equal+quickSort(greater)
else:
return lst
def main():
lst = [1000000,100000,1000,10000,100,10]
sortedLst = quickSort(lst)
print("Quicksorted List: ", sortedLst)
main()
Почему, когда я запускаю мой код, он говорит, что он работает в этой ошибки:
ValueError: empty range for randrange() (0,0, 0)
ошибка довольно очевидна explonatory. Вы вызываете случайное значение в пустом диапазоне, поэтому в какой-то момент ваш код вызывает quicksort ([]), и вы пытаетесь получить randomIndex/pivot, даже когда список пуст. – lejlot
Это, скорее всего, потому, что либо 'большее ', либо' less' имеет один элемент в них. Поэтому, когда вы устанавливаете 'randomIndex' в диапазон от 0 до длины списка, вы получаете' random.randint (0, 0) '. Я бы рекомендовал добавить команду 'print' перед вашим оператором' return', чтобы увидеть, как выглядят эти списки. – brittenb