両方のアルゴリズムのロジックは非常に似ています。どちらも、配列の先頭に部分的にソートされたサブ配列があります。唯一の違いは、ソートされた配列に配置される次の要素を検索する方法です。
また、選択ソートとは異なり、挿入ソートは安定しています。
私は両方をpythonで実装しましたが、それらがどれほど似ているかは注目に値します。
def insertion(data):
data_size = len(data)
current = 1
while current < data_size:
for i in range(current):
if data[current] < data[i]:
temp = data[i]
data[i] = data[current]
data[current] = temp
current += 1
return data
小さな変更で、選択ソートアルゴリズムを作成することが可能です。
def selection(data):
data_size = len(data)
current = 0
while current < data_size:
for i in range(current, data_size):
if data[i] < data[current]:
temp = data[i]
data[i] = data[current]
data[current] = temp
current += 1
return data