今天在看数据库原理的时候,讲到排序算法- 归并排序,随手自己写了一下思路,再上网查,发现有点不同。主要是数组长度为奇数的情况:
归并算法采用的事分治思想,即先分,然后治。
中间是分割两部分的地方,即分后待治。
这是跟我的思路一样的。
但是我发现有一些是:
,
如果数组长度是奇数的情况,那么不应该把最后一位直接单独开,而是应该把数组一分为二,再分下去,直到剩下2个,1个元素为止。
比如数组长度为11的 [5,4,1,2,3,6,7,9,8,10,11];
个人见解,不过这也是采用不同的实现方法而产生的不同而已,没什么对错。
我的实现代码:
https://github.com/guinguo/dataStruct/blob/master/src/top/guinguo/algorithm/MergeSort.java