[アルゴリズム]ソートの挿入
1043 ワード
挿入ソートとは、ソートされていない配列の要素を、前にソートが完了した要素と順番に比較し、自分の位置を見つけてソートを挿入するアルゴリズムです.
並べ替えられていない配列の2番目の要素を前の要素と比較します.位置を変更して、より小さな要素を前面に配置します.
[70, 31, 3, 72, 20] -> [31, 70, 3, 72, 20]
自分より大きい要素を見つける前に、上記の手順を繰り返します.
ソートされていない配列の要素について、1と2つのプロシージャを順次繰り返します.
[31, 70, 3, 72, 20] -> [31, 3, 70, 72, 20]
[31, 3, 70, 72, 20] -> [3, 31, 70, 72, 20]
[3, 31, 70, 72, 20] -> [3, 31, 70, 20, 72]
[3, 31, 70, 20, 72] -> [3, 31, 20, 70, 72]
並べ替えられていない配列の2番目の要素を前の要素と比較します.位置を変更して、より小さな要素を前面に配置します.
[70, 31, 3, 72, 20] -> [31, 70, 3, 72, 20]
if data[j] < data[j-1]:
data[j], data[j-1] = data[j-1], data[j]
自分より大きい要素を見つける前に、上記の手順を繰り返します.
for j in range(i, 0, -1):
if data[j] < data[j-1]:
data[j], data[j-1] = data[j-1], data[j]
else:
break
ソートされていない配列の要素について、1と2つのプロシージャを順次繰り返します.
[31, 70, 3, 72, 20] -> [31, 3, 70, 72, 20]
[31, 3, 70, 72, 20] -> [3, 31, 70, 72, 20]
[3, 31, 70, 72, 20] -> [3, 31, 70, 20, 72]
[3, 31, 70, 20, 72] -> [3, 31, 20, 70, 72]
def insert(data):
for i in range(1, len(data)):
for j in range(i, 0, -1):
if data[j] < data[j-1]:
data[j], data[j-1] = data[j-1], data[j]
else:
break
return data
Reference
この問題について([アルゴリズム]ソートの挿入), 我々は、より多くの情報をここで見つけました https://velog.io/@super-d/알고리즘-삽입-정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol