Python 排序算法之归并排序
"""
归并排序
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()
作者:皎然CEO
链接:https://www.cnblogs.com/jiaoran/p/14584223.html
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦(っ•̀ω•́)っ✎⁾⁾!