归并排序1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(分治法)的一个非常典型的应用,且各层分治递归可以同时进行。
将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。
(请在发表文章时插入ms.webp这张图片)
' ' ' python
合并(左,右):
我j==
结果=[]
length_left=len(左)
length_right=len(右)
我& lt;length_left j & lt;length_right:
左[我]& lt;=[j]:
result.append(左[我])我+=
:
result.append(右[j]) j +=
result.extend(左[我])
result.extend(右[j:])
merge_sort结果(列表):
长度=len(列表)
& lt;长度=:
列表
=长度/中期/
左=merge_sort(列表(中期):)
=merge_sort(列表[中期:])
合并(左、右)
数量=(,,,,,,,,,)
merge_sort(数字)==(,,,,,,,,,)
' ' '