#Created By: Chen Da
#定义一个合并方法,等价于Python内置的sorted
def merge_sorted_list(sorted_a,sorted_b):
length_a,length_b = len(sorted_a),len(sorted_b)
a = b = 0 #定义指针
new_list = list()
while a < length_a and b < length_b:
if sorted_a[a] < sorted_b[b]:
new_list.append(sorted_a[a])
a += 1
else:
new_list.append(sorted_b[b])
b += 1
while a < length_a:
new_list.append(sorted_a[a])
a += 1
while b < length_b:
new_list.append(sorted_b[b])
b += 1
return new_list
#合并排序
def merge_sort(seq):
if len(seq) <= 1:
return seq
else:
mid = int(len(seq) / 2)
left_sorted_list = merge_sort(seq[:mid]) #递归等分原列表
right_sorted_list = merge_sort(seq[mid:])
new_sorted_list = merge_sorted_list(left_sorted_list,right_sorted_list)
return new_sorted_list
def test_merge_sort():
lyst = list(range(20))
import random
random.shuffle(lyst)
assert merge_sort(lyst) == list(range(20))
if __name__ == "__main__":
test_merge_sort()
12_数据结构与算法_归并排序_Python实现
猜你喜欢
转载自blog.csdn.net/PyDarren/article/details/83512086
今日推荐
周排行