ソートアルゴリズムの選択


今日は選択ソートについて知りたいです.
選択ソートは、配列の最小数値を選択し、未ソート配列の一番左の要素と交換する操作を繰り返してソートする方法です.

  • 並べ替えられていない配列の最小数を選択します.
    [70, 31, 3, 72, 20]
    index = 0
    for j in range(len(data)):
        if data[index] > data[j] :
            index = j

  • 選択した要素とソートされていない配列の一番左の要素を最小数で交換します.
    [70, 31, 3, 72, 20] --> [ 3, 31, 70, 72, 20]
    index = 0
    for j in range(len(data)):
        if data[index] > data[j] :
            index = j
    data[0], data[index] = data[index], data[0]

  • 上の1番2番のプロセスを整列するまで繰り返します.
    [70, 31, 3, 72, 20] --> [ 3, 31, 70, 72, 20]
    [ 3, 31, 70, 72, 20] --> [ 3, 20, 70, 72, 31]
    [ 3, 20, 70, 72, 31] --> [ 3, 20, 31, 72, 70]
    [ 3, 20, 31, 72, 70] --> [ 3, 20, 31, 70, 72]
    def select(data):
        for i in range(len(data)-1):
            index = i
            for j in range(i+1, len(data)):
                if data[index] > data[j]:
                    index = j
            if i != index:
                data[i], data[index] = data[index], data[i]
        return data