python实现归并排序
#5.归并排序 时间复杂度为O(nlogn)空间复杂度为O(n)稳定
#分治的思想 复杂问题简单化
def merge_sort(L):
if len(L)<2:
return L
mid=len(L)//2
return merge(merge_sort(L[:mid]),merge_sort(L[mid:]))
def merge(left, right):
i = j = 0
n = len(left)+len(right)
s = [0] * n
while i + j < n:
if j == len(right) or (i < len(left) and left[i] < right[j]):
s[i + j] = left[i]
i += 1
else:
s[i + j] = right[j]
j += 1
return s
if __name__ == '__main__':
L = [8, 7, 6, 5, 4, 3, 2, 1, 0, 1]
print(merge_sort(L))
结果#[0, 1, 1, 2, 3, 4, 5, 6, 7, 8]