目录
1. 说明
归并排序(MERGE-SORT) 是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。
若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。百度百科
现在让我带领大家看看怎么实现的吧!
2. 归并排序
一个时间性能比较好的排序方法,但是它的空间复杂度较高T(n)
2.1. 实现过程
通过递归将数组一直切割直至为将数组分成两两一组。排序完成之后往上层回溯,此时变成四四一组…重复上述过程直到递归结束。
归并排序动画演示
2.2. 代码片段 - 自顶向下
2.2.1.代码片段
func MergeSort(arr []int) {
n := len(arr)
mergeSort(arr, 0, n-1)//注意这里的区间[0...r],归并的过程中需要保持这个区间的性质不变。
}
func mergeSort(arr []int, l, r int) {
if l >= r {
//当 l==r 的时候已经不需要递归分割了
return