pythonとアルゴリズムの勉強かねがね、選択ソートを実装してみました。
1.ランダムなリストを作成する
例:
[1,3,0,4,2]
2.操作対象リストの中で最小の値を探す
例:
[1,3,0,4,2]→0が最小
3.一番左を0と入れ替えて、0は操作完了にする
[1,3,0,4,2]→[0,3,1,4,2]
-次は左から二番目、その次は三番目…と順に対象にして2.と3.を繰り返す-
[1,3,0,4,2]
[0,3,1,4,2]
[0,1,3,4,2]
[0,1,2,4,3]
[0,1,2,3,4]
…という処理を選択ソートと呼ぶらしいです。
select_sort.py
import random
# 準備する値の数を入力
numbers = 10
# チェック済の値を格納するリストの作成
pop_list = []
# 乱数の作成
num_list = list(range(numbers))
random.shuffle(num_list)
def _select_min(num_list, pos):
_min = None
_left = num_list[pos]
_pos = 0
for i in range(pos, len(num_list)):
if _min == None or _min > num_list[i]:
_min = num_list[i]
_pos = i
num_list[pos] = _min
num_list[_pos] = _left
return(num_list)
# メイン処理
print("START : ",num_list)
for i in range(len(num_list)):
num_list = _select_min(num_list, i)
print("GOAL : ",num_list)