QuickSort运行不正常 - Python 3

时间:2017-11-06 00:21:10

标签: python quicksort

我遇到QuickSort问题。他给我列了清单,但从我那里拿了一些东西。我不知道错误是什么。 我很感激你的帮助。

代码:

#QuickSort
def quickSort(lista):
    if len(lista) < 2:
        return lista
    menores, medio, mayores = _partition(lista)
    return quickSort(menores) + medio + quickSort(mayores)

def _partition(lista):
    pivote = lista[0]
    menores = []
    mayores = []
    for x in range(1,len(lista)-1):
        if lista[x] < pivote:
            menores.append(lista[x])
        else:
            mayores.append(lista[x])
    return menores, [pivote], mayores

L = [6,7,-1,0,5,2,3,8]
print(quickSort(L))

结果:

[-1, 0, 5, 6, 7]
[Finished in 0.2s]

1 个答案:

答案 0 :(得分:0)

每次调用for x in range(1,len(lista)-1): 时,您都会删除最后一个元素,因为您使用了

for x in range(1,len(lista)):

而不是

range(1,n)

[1,2,...(n-1)]给出wait(Semaphore s){ s=s-1; if (s<0) { // add process to queue block(); } } signal(Semaphore s){ s=s+1; if (s>=0) { // remove process p from queue wakeup(p); } }