エラーが発生するのは
for i in range(2, N + 1):
j = i
while j > 1 and A[j] < A[j - 1]:
i のレンジ が 2〜Nなので iがNの場合に jがNになって A[j]でAの配列の index 範囲をこえてるからです。( Aのindex は 0〜N-1まで )
def InsertSort(A,N): がコードからぬけてる事は考慮済みで指摘します
指摘1
i の開始が2からなので 比較開始配列の index 0番目と1番目の比較が対象から外れている。i の終了はN-1だから
- for i in range(2, N + 1):
+ for i in range(1, N ):
指摘2
j の判断が2からなので index 0番目と1番目の比較が実行されない
- while j > 1 and A[j] < A[j - 1]:
+ while j > 0 and A[j] < A[j - 1]:
指摘3
A[j]とA[j - 1]の入れ替えができていない
- tmp = A[j]
- A[j] = A[j - 1]
+ tmp = A[j]
+ A[j] = A[j - 1]
+ A[j - 1] = tmp
どうでしょう。
Like!