编译 QuickSort 问题 [Python]
Problem with compilation QuickSort [Python]
我的快速排序的就地实施有点问题:
from random import randint
def particionado(lista, menor, mayor):
pivote = lista[mayor]
i = menor - 1
for j in range(menor, mayor):
if lista[j] <= pivote:
lista[i],lista[j] = lista[j],lista[i]
i = i+1
lista[i+1],lista[mayor] = lista[mayor],lista[i+1]
return i+1
def quickSort(arreglo,menor,mayor):
if menor < mayor:
piv = particionado(arreglo,menor,mayor)
quickSort(arreglo, menor, piv-1)
quickSort(arreglo,piv+1,mayor)
A = [randint(1, 100) for i in range(10)]
print(A)
print(quickSort(A,0,len(A)-1))
并且在我尝试编译时发生,它给出随机列表但不对其进行排序,而是抛出“None”。我不知道我能做些什么来解决它。
您的 quickSort
函数没有 return
语句,因此它 return 没有 return 任何内容(在 [= 中称为 None
18=]).但是,数组应该就地排序。
尝试:
A = [randint(1, 100) for i in range(10)]
print(A)
quickSort(A, 0, len(A) - 1)
print(A)
我的快速排序的就地实施有点问题:
from random import randint
def particionado(lista, menor, mayor):
pivote = lista[mayor]
i = menor - 1
for j in range(menor, mayor):
if lista[j] <= pivote:
lista[i],lista[j] = lista[j],lista[i]
i = i+1
lista[i+1],lista[mayor] = lista[mayor],lista[i+1]
return i+1
def quickSort(arreglo,menor,mayor):
if menor < mayor:
piv = particionado(arreglo,menor,mayor)
quickSort(arreglo, menor, piv-1)
quickSort(arreglo,piv+1,mayor)
A = [randint(1, 100) for i in range(10)]
print(A)
print(quickSort(A,0,len(A)-1))
并且在我尝试编译时发生,它给出随机列表但不对其进行排序,而是抛出“None”。我不知道我能做些什么来解决它。
您的 quickSort
函数没有 return
语句,因此它 return 没有 return 任何内容(在 [= 中称为 None
18=]).但是,数组应该就地排序。
尝试:
A = [randint(1, 100) for i in range(10)]
print(A)
quickSort(A, 0, len(A) - 1)
print(A)