今回のプログラムは、並び替えるだけではなく「比較回数」、「交換回数」、「並び替え処理にかかる時間」の3つを計測しています。詳しくは参考を見てください。
参
考
|
項目
|
変数名
|
説明
|
|
比較回数のカウント
|
compare_count |
比較回数をカウントする。
20行目:compare_count = 0 # カウント用に0で初期化する
30行目:compare_count = compare_count + 1 # 比較回数を1カウントアップする
42行目:print("比較回数:", compare_count) # 比較回数を表示する
|
|
交換回数のカウント
|
swap_count |
交換回数をカウントする。
21行目:swap_count = 0 # カウント用に0で初期化する
35行目:swap_count = swap_count + 1 #交換回数を1カウントアップする
44行目:print("交換回数:", swap_count) #交換回数を表示する
|
|
整列処理時間の計測
|
start_time end_time |
選択法で並び替えを行う処理を計測する。
25行目:start_time = time.time() # 整列処理開始時刻の取得
38行目:end_time = time.time() # 整列処理終了時刻の取得
44行目:print("処理時間: {:.6f} 秒".format(end_time - start_time)) # 終了時刻 -
開始時刻を計算し、処理時間を求めて表示する
|
表にある「比較回数のカウント」・「交換回数のカウント」・「整列処理時間の計測」に関する命令は、整列アルゴリズムとは直接関係なく、整列処理の効率を測るためのデータを表示するための記述です。
次のPythonプログラムは選択法でデータを並び替えるプログラムです。プログラムは下記からGooge Colabを開き確かめましょう。
Google Colabは次のリンクから開きましょう。
また、新しくノートブック「ip0211」を作成してプログラムを貼り付けて実行してください。
import random
import time
# 配列をランダムに生成する関数(探索で利用したもの)
def generate_array(size=10, low=1, high=100):
"""
ランダムな整数の配列を生成する
size : 要素数
low : 最小値
high : 最大値
"""
return random.sample(range(low, high+1), size) # 重複なし
# ここから処理を始める
# ランダム配列を生成
data = generate_array(20, 1, 100000) # 配列の作成
print("ソート前:", data)
# 初期化
compare_count = 0 # 比較回数カウント用
swap_count = 0 # 交換回数カウント用
n = len(data) #配列の要素数を n に代入
# 時間計測用 ソート開始時間の取得
start_time = time.time()
#選択法の開始
for i in range(n - 1):
for j in range(i + 1, n):
compare_count = compare_count + 1 #比較回数のカウントアップ
if (a) # データを交換する条件
(b-1) # データを交換する
(b-2) # データを交換する
(b-3) # データを交換する
swap_count = swap_count + 1 # 交換回数のカウントアップ
# ソート終了時間
end_time = time.time()
# 表示
print("ソート後:", data)
print("比較回数:", compare_count)
print("交換回数:", swap_count)
print("処理時間: {:.6f} 秒".format(end_time - start_time))