算法回望——归并排序

来源:互联网 发布:淘宝抽奖转盘怎么弄 编辑:程序博客网 时间:2024/05/17 09:26

写在前面:http://blog.csdn.net/jarwis/article/details/70768437


归并排序

思路:

1.将数组2分,得到的数组再各自二分,最终划分为以1为单位长度的有序数组。
2.得到有序数组之后再向上merge排序,使之成为单位长度为2的有序组。

3.接着再向上递归以此类推直到排序完毕。

 

merge思路:

1.提供一个新的数组aux复制原数组arr
2.aux可看做两个数组,边界分别为[l,mid][mid+1,r],在lmid+1处设好指针

3.由于两个数组皆是有序的,所以直接比较两指针所指向的元素的大小,谁小就将谁的值赋给arr数组相应位置上的数。

4.然后较小的数所在的数组指针指向后一位。

5.[l,mid]数组指针大于mid,说明该数组已经全部放入原数组,随后直接将后一个数组没有放入的值依次放入就好了。反之亦然。

 

特点:

先拆分,后排序。

 

代码实现:

https://github.com/Meidanlong/GHTheFirstTry

 

 

0 0
原创粉丝点击