归并排序|python实现
归并排序所采用的思想主要是分治思想.其主要实现方法是将数组先进行拆分,其次进行合并.将整个数组拆分为多个小数组排序问题,最后再将其进行归并排序实现,其时间复杂度为O(n*lg n),是一种稳定的排序方式.
代码部分
'''
作者:smallMQ
主要思想:分治思想\递归
无论怎样时间复杂度都为O(n*lgn)
稳定
'''
list1 = [2, 1, 10, 5, 2, 6, 3, 4, 20, 6, 7, 8]
def MergeSort(l):
if (len(l) <= 1):
return l
mid = int(len(l) / 2)
# 打散
l_list, r_list = MergeSort(l[:mid]), MergeSort(l[mid:])
result = []
i, j = 0, 0
# 合并
while i < len(l_list) and j < len(r_list):
if l_list[i] < r_list[j]:
result.append(l_list[i])
i += 1
else:
result.append(r_list[j])
j += 1
result += l_list[i:] + r_list[j:]
return result
print(MergeSort(list1))