概要
Pythonで挿入ソートを実装してみました。以下のページを参考にしました。
http://www1.cts.ne.jp/~clab/hsample/Sort/Sort2.html
ソースコード
上記のC言語のfor文をwhile文に書き換えました。あとはいっしょです。
insertion_sort.py
import random
data = {}
data2 = {}
temp = {}
NUM = 10
i = 0
while i < NUM:
data[i] = random.random()
i = i + 1
#show
def show_data():
print("==>> show data")
i = 0
while i < NUM:
print ( str(i) + ":" + str(data[i]) )
i = i + 1
def show_data2():
print("==>> show data2")
i = 0
while i < NUM:
print ( str(i) + ":" + str(data2[i]) )
i = i + 1
#copy
def copy_data_to_data2():
print("==>> copy data to data2")
i = 0
while i < NUM:
data2[i] = data[i]
i = i + 1
#insertion_sort
def insertion_sort(array, n):
print("==>> insertion sort")
i = 0
j = 0
temp = 0
i = 1
while i < n:
temp = array[i]
j = i
while j > 0 and array[j-1] > temp:
array[j] = array[j - 1]
j = j - 1
array[j] = temp
i = i + 1
copy_data_to_data2()
show_data2()
insertion_sort(data2, NUM)
show_data2()
実行結果
実行できました。アルゴリズムは正常に動いています。
$ python insertion_sort.py
==>> copy data to data2
==>> show data2
0:0.869473256419
1:0.257731491847
2:0.913115196463
3:0.201501660522
4:0.00858543758708
5:0.587123873954
6:0.23756328504
7:0.524541808381
8:0.776380856197
9:0.00613001602015
==>> insertion sort
==>> show data2
0:0.00613001602015
1:0.00858543758708
2:0.201501660522
3:0.23756328504
4:0.257731491847
5:0.524541808381
6:0.587123873954
7:0.776380856197
8:0.869473256419
9:0.913115196463
何かの役に立てばと。