選択ソートを実装してみます。
概要
選択ソート(英: 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]