独学コンピューターサイエンティストのマージソートサンプルプログラムを無駄に改造してみた・・・
タイトルの通り、独学コンピューターサイエンティスト p87 のマージソートサンプルプログラムを、無駄に改造してみました。それだけです。(汗)
# 独学コンピューターサイエンティストのマージソートサンプルプログラムを無駄に改造してみた・・・
def merge_sort(a_list):
if len(a_list) != 1 and a_list: # 改造! and a_list は空リスト対策。オリジナルは if len(a_list) > 1:
mid = len(a_list) // 2
left = a_list[:mid]
right = a_list[mid:]
merge_sort(left)
merge_sort(right)
left_i = 0
right_i = 0
alist_i = 0
while (
left_i != len(left) and # 改造! オリジナルは left_i < len(left) and
right_i != len(right) # 改造! オリジナルは right_i < len(right)
):
if left[left_i] <= right[right_i]:
a_list[alist_i] = left[left_i]
left_i += 1
else:
a_list[alist_i] = right[right_i]
right_i += 1
alist_i += 1
while left_i != len(left): # 改造! オリジナルは while left_i < len(left):
a_list[alist_i] = left[left_i]
left_i += 1
alist_i += 1
while right_i != len(right): # 改造! オリジナルは while right_i < len(right):
a_list[alist_i] = right[right_i]
right_i += 1
alist_i += 1
return a_list
# merge_sort関数を実行するために以下を追加。。。
list = [103, 8, 10, 33, 4, 1]
print(list, '=>', merge_sort(list[:]))
出力結果
[103, 8, 10, 33, 4, 1] => [1, 4, 8, 10, 33, 103]
#独学コンピューターサイエンティスト
#独CS #selftaughtcoder
#Python #Python3
#マージソート