2017-10-13 11 views
-3

私は再帰関数を使って挿入ソートを実装しようとしていました。Pythonの再帰関数を使った挿入ソート

def insertion_sort(arr): 
    found=False 
    #Base case when list has only one element 
    if len(arr)==1: 
     return arr 
    else: 
    ''' 
     insert nth element in appropriate postion in a sorted list of n-1 elements 
    '''  
     partial_list=insertion_sort(arr[:len(arr)-1] 
     element=arr[-1] 
     for i in range(len(partial_list)): 
      if partial_list[i]>element: 
       index=i 
       found=True 
       break 
     if found: 
      return partial_list.insert(index,element) 
     else: 
      return partial_list.append(element) 

しかし、そのエラーを示す:iについての範囲内(LEN(partial_list)): TypeError例外:タイプのオブジェクトが 'NoneType' はLENを有していません()。 誰でもpart_listが 'None'タイプのオブジェクトである理由を説明できますか?関数insertion_sortがリストを返すにもかかわらず?

+0

注:これは、 'for'ループの' else'のための完全な使用例です。 'found'フラグを保存します。 –

+0

'insert'または' append'の結果を返します。これは 'None'です。最初に追加または挿入し、 'return partial_list' –

答えて

0

明らかに必ずしもリストを返すわけではありません。アサートまたはアペンドのうちの少なくとも1つはそうではありません。

関連する問題