def merge_sort(lists):
lengh = len(lists)
if lengh <= 1:
return lists
num = lengh // 2
left = merge_sort(lists[:num])
right = merge_sort(lists[num:])
return merge(left,right)
def merge(left, right):
l, r = 0, 0
result = []
while l < len(left) and r < len(right):
if left[l] <= right[r]:
result.append(left[l])
l += 1
else:
result.append(right[r])
r += 1
result += left[l:]
result += right[r:]
return result
lists = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print(merge_sort(lists))
# [17, 20, 26, 31, 44, 54, 55, 77, 93]
时间复杂度:O(nlog2n)
稳定性:稳定