"""
歸併排序
1. 實現合併兩個有序數組
2. 根據中間一個元素將數組一分爲二,分別調用自身
3. 將兩部分排好序的數組合並
"""
# c = [*a, *b]
# print(sorted(c))
# 合併兩個有序數組
def merge_sorted_list(a, b):
length_a, length_b = len(a), len(b)
i = j = 0
res = []
while i < length_a and j < length_b:
if a[i] < b[j]:
res.append(a[i])
i += 1
else:
res.append(b[j])
j += 1
if i < length_a:
res.extend(a[i:])
else:
res.extend(b[j:])
return res
def test_merge_sorted_list():
a = [1, 2, 5]
b = [0, 3, 4, 8]
c = merge_sorted_list(a, b)
print(c)
# test_merge_sorted_list()
# 分治法三步走。注意遞歸出口
def mergesort(array):
if len(array) < 2:
return array
else:
mid = int(len(array) // 2)
right_half = mergesort(array[mid:])
left_half = mergesort(array[:mid])
return merge_sorted_list(left_half, right_half)
def test_mergesort():
import random
ll = list(range(10))
random.shuffle(ll)
print(ll)
print(mergesort(ll))
test_mergesort()
Python 排序算法之歸併排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.