2016-09-05 7 views
0

リストを昇順にソートする挿入ソートプログラムを作成しようとしています。Pythonの挿入ソートエラー

listNums = [54, 21, 76, 43, 65, 98, 65, 32, 34, 38] 

    x = 1 
    i = 0 
    Copy = 0 

    for z in range (0, len(listNums)): 
      if listNums[x] < listNums[i]: 
        Copy = listNums[i] 
        listNums[i] = listNums[x] 
        listNums[x] = Copy 
      i = i + 1 
      x = x + 1 

    print(listNums) 
+2

はあなたがrrorの実際のテキストは何ですか与え理由ですリストの長さを超えて取得? – Amber

+0

'bisect'モジュールはあなたのためにすべての仕事をします... – thebjorn

答えて

1

チャンスがxは最終的にゼロインデックス付き配列の境界を越えて1であるlen(listNums)までインクリメントので、それは境界エラーです以下のとおりです。このプログラムでは

line 16, in <module> if listNums[x] < listNums[i]: 

:私はエラーを取得しています。

range(0, len(listNums)-1)までの反復のみを試してください。

0

私はちょうど

[21, 32, 34, 38, 43, 54, 65, 65, 76, 98] 
=> None 

(repl.it上でコンパイル)

を与える、すなわち、それを行うには良い方法、

listNums = [54, 21, 76, 43, 65, 98, 65, 32, 34, 38] 

listNums.sort() 
print listNums 

があることを指摘したいと思いますお役に立てれば!

0

これはされていない最後の繰り返しでinsertion sort error すなわちLEN(listNums)番目の反復、xの値は、それがIndexError: list index out of range