[アルゴリズム]ソートの挿入


挿入ソートとは、ソートされていない配列の要素を、前にソートが完了した要素と順番に比較し、自分の位置を見つけてソートを挿入するアルゴリズムです.

  • 並べ替えられていない配列の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