2016-05-10 2 views
0

私はこのバブルソートプログラムを書いたことがあります。実行すると、 'return'が表示されますが、リストは返されません。理由はわかりません。バブルソートではないリスト

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 

私の質問には重複しているというメッセージが表示され、もう1つの質問は返されませんでした。

+2

'bub_sort(ol)'(下から4行)を返す必要があります。 – Sayse

答えて

4

あなたは再帰呼び出しから戻っていませんでした。

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. バブルソートの再帰の必要はありません。

関連する問題