归并排序
思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。
代码如下:
def merge(li, low, mid, high):
mid = (low + high)//2
i = low
j = mid+1
temp = []
while i<=mid and j<=high:
if li[i]<li[j]:
temp.append(li[i])
i = i+1
else:
temp.append(li[j])
j = j+1
while i<=mid:
temp.append(li[i])
i = i+1
while j<=high:
temp.append(li[j])
j = j+1
li[low: high+1] = temp
def merge_sort(li, low, high):
if low<high:
mid = (low+high)//2
merge_sort(li, low, mid)
merge_sort(li, mid+1, high)
merge(li, low, mid, high)
li = list(range(10))
random.shuffle(li)
print(li)
merge_sort(li, 0, len(li)-1)
print(li)
结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/36a302f9a8f443c785b926b24e082635.png)