Niedziałający Quicksort

0

Próbuję zrobić Quicksorta w pythonie i coś mi nie wychodzi, napisałem już tyle. Może ktoś jest w stanie wskazać gdzie jest błąd?

z=[1,4,2,8,6,4,65,34,23,54,11,14,3]

def QS(z,left,right):
    if right>=left: 
        
        p=pivot(z,left,right)
        QS(z,left,p-1)
        QS(z,p+1,right)
        return z
        
def pivot(z,left,right):
    
    i=left
    for j in range(left+1,right+1):
        
        if z[j]<z[left]:
            i=+1
            z[i],z[j]=z[j],z[i]
    z[i],z[left]=z[left],z[i]
    
    return i

print QS(z, 0, len(z)-1) 
1

Wcześniejszego posta usunąłem bo nie był do końca poprawny.
Błąd to =+1 zamiast +=1 w miejscu zaznaczonym:

def pivot(z,left,right):
    i=left
    for j in range(left+1,right+1):
        if z[j]<z[left]:
            i=+1      <------------- TUTAJ
            z[i],z[j]=z[j],z[i]
    z[i],z[left]=z[left],z[i]
    return i
 
print QS(z, 0, len(z)-1) 
0

Ten błąd z "+=" dobrze wyszukany dziękuję, lecz wciąż nie działa

Traceback (most recent call last):
File "python", line 23
print QS(z, 0, len(z)-1)
^
SyntaxError: invalid syntax

1

A no bo w pythonie 3.X musisz zrobić
print(QS(z, 0, len(z)-1)) zamiast print QS(z, 0, len(z)-1).

0

Działa?

Sprawdzałeś czas sortowania (przy wariantach pesymistycznym i optymistycznym)?

1 użytkowników online, w tym zalogowanych: 0, gości: 1