我遇到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]
答案 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);
}
}
)