归并排序--分治
把一个数组拆成两个,然后再和起来,在重新组合的过程中比较两个数组中的元素的大小并排序。
在此过程中,当数组中只有一个元素时认为其是有序的并返回。
因此需要用到递归,当 l>=r 时返回。
1.确定分界点mid。
2.递归left和right。
3.比较两个数组并将其合二为一。
在上图中数组a实际上并没有被拆开,而是仅仅以下标区分,所以在合并时为了方便把数据暂存在了b数组中,因此需要在最后需要把b中的已经排好序的数字拷贝到a里去。
关于排序,无论是快排还是归并,对下标进行的加一等处理比较关键,这一点是需要慢慢思考的。
不然原数据有可能被覆盖导致错误。
例如,上图的j=mid+1换成j=mid就不行