Python

Pythonで学ぶアルゴリズム ソート 選択ソート

選択ソートを実装してみます。

概要

選択ソート: selection sort)は、ソートアルゴリズムの一つ。配列された要素から、最大値やまたは最小値を探索し配列最後の要素と入れ替えをおこなうこと。最悪計算時間がO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、しばしば用いられる。内部ソート。後述するように、安定ソートではない。

このアルゴリズムを改良したソート法として、ヒープソートが挙げられる。

選択ソート – Wikipedia

サンプルコード

import random


data_len = 10
data = random.sample(range(1, 42), data_len)
print(data)


def selection_sort(collection):

    length = len(collection)
    for i in range(length - 1):
        least = i
        for k in range(i + 1, length):
            if collection[k] < collection[least]:
                least = k
        if least != i:
            collection[least], collection[i] = (
                collection[i], collection[least])
        print(collection)
    return collection


selection_sort(data)

実行結果(例)

[17, 30, 7, 4, 11, 14, 12, 21, 35, 2]
[2, 30, 7, 4, 11, 14, 12, 21, 35, 17]
[2, 4, 7, 30, 11, 14, 12, 21, 35, 17]
[2, 4, 7, 30, 11, 14, 12, 21, 35, 17]
[2, 4, 7, 11, 30, 14, 12, 21, 35, 17]
[2, 4, 7, 11, 12, 14, 30, 21, 35, 17]
[2, 4, 7, 11, 12, 14, 30, 21, 35, 17]
[2, 4, 7, 11, 12, 14, 17, 21, 35, 30]
[2, 4, 7, 11, 12, 14, 17, 21, 35, 30]
[2, 4, 7, 11, 12, 14, 17, 21, 30, 35]