2017-08-29 4 views
1

Ich versuche, eine einfache Blase Sortierung zu machen, und die If-Anweisung, die ich verwende, um die Zahlen in meinem Array zu sortieren, läuft nicht. Kann mir jemand helfen, dass das funktioniert?Beim Ausführen meiner Funktion

Hier ist mein Code:

def Bubble(a): 
    Flag = False 
    while not Flag: 
     Flag = True 
     for i in range(0, len(a), -1): 
      if a[i] > a[i+1]: #this if statement isn't running 
       a[i], a[i + 1] = a[i + 1], a[i] 
       print("hi") 
       Flag = False 



def main(): 
    a = GRN(10) 
    acopy = a[:] 
    Bubble(a) 
    acopy.sort() 
    print(a==acopy) 
    print(a) 
    print(acopy) 


main() 
+3

Warum denken Sie, dass es nicht läuft? –

+0

Ich habe die print-Anweisung innerhalb der if-Anweisung verschachtelt und druckt keine – Mychsmit

+1

-Anweisung, die eine print-Anweisung enthält, wenn nur bewiesen wird, ob die Bedingung wahr ist und nicht, ob diese Codezeile ausgeführt wird oder nicht. –

Antwort

3

range(0, len(a), -1) ist immer eine leere Liste, weil der Schritt negativ ist. Es ist nicht die if Aussage zu beschuldigen, sondern die for Schleife. Was Sie brauchen, ist range(len(a)-1).

+0

wenn ich die -1 entferne Meine Liste Index ist außerhalb des Bereichs – Mychsmit

+0

Überprüfen Sie die aktualisierte Antwort. – DyZ

+0

Perfekt danke! Ich werde upvoten, sobald die zehn Minuten abgelaufen sind. – Mychsmit

Verwandte Themen