2016-05-10 11 views
0

Ich habe dieses Blasensortierprogramm geschrieben, und wenn ich es ausführe, druckt die Konsole "return", aber die Liste wird nicht zurückgegeben, und ich habe keine Ahnung warum.Bubble Sort Nicht retournierende Liste

def bub_sort(ol): 
    print'function start' 
    s=0 
    for x in range(1,len(ol)): 
     print'in floop' 
     if ol[x]>ol[x-1]: 
      print'swap' 
      ol[x],ol[x-1]=ol[x-1],ol[x] 
      s=s+1 
    if s>0: 
     print'restart' 
     bub_sort(ol) 
    else: 
     print'return' 
     return ol 

bekam eine Nachricht, die meine Fragen ein Duplikat sagte, die andere Frage vergaß zurückzukehren.

+2

Sie müssen 'bub_sort (ol)' zurückgeben (4 Zeilen von unten) – Sayse

Antwort

4

Sie sind nicht von dem rekursiven Aufruf zurückgekehrt.

def bub_sort(ol): 
    print 'function start' 
    s = 0 
    for x in range(1, len(ol)): 
     print 'in floop' 
     if ol[x] > ol[x-1]: 
      print 'swap' 
      ol[x], ol[x-1] = ol[x-1], ol[x] 
      s += 1 # Python has the increment operator. 
    if s > 0: 
     print 'restart' 
     return bub_sort(ol) 
    else: 
     print 'return' 
     return ol 

P.S. Es gibt keine Notwendigkeit in Rekursion in Bubble-Sort.

Verwandte Themen