归并排序mergeSort
先让左侧部分排好序
变成了1,2,3
再让右侧部分排好序
变成了2,5,6
怎么样让它整体都有序呢
merge在一起就行了
准备一个辅助空间 谁小拷贝谁
左侧下标指向1
右侧下标指向2
左侧如果小于等于右侧
先拷贝左侧的
如果右侧小于左侧
则先拷贝右侧
如图 1小拷贝1 指针往下动
相等的时候 默认拷贝左边的 指针再往右动
3>2 右侧小拷贝右边的 指针往右动
3<5 拷贝3 指针越界 将剩下的拷贝过来
小结
左侧部分排好序
右侧部分排好序
利用merge的过程 使得整体都有序
在辅助空间有序了 再拷贝回原数组
1、L=R 就一个数 return
2、先左侧排序
3、再右侧排序
4、此时整体还无序
所以有一个merge的过程
整个范围是L~R
左侧范围是L~M
右侧范围是M+1 ~ R
所有用L、M、R表示2个区域的意思
左侧和右侧各自都有序了
再来看下merge的过程
a、先准备一个辅助空间help
L-R上一共有多少个数 就开多大的空间
i 这个 变量专门给help使用的