多语言展示
当前在线:1343今日阅读:86今日分享:14

使用java实现无哨兵的归并排序

之前我们为了简化比较策略,采用哨兵,在带归并的两段数组上添加一个∞的哨兵。这次,我们不使用哨兵,而是多添加两个判断语句来实现归并排序。0使用java实现归并排序
方法/步骤
1

如下是归并排序算法的执行流程:逐步递归直到每一组只有一个元素后,依次回溯,合并每一对数组。

2

打开MyEclipse,创建一个新的工程:依次点击File->New->Java Project。在弹出窗口输入项目的名称,并点击Finish。

3

然后右击项目路径下的src,然后选择New->Class,输入包名与类名,创建排序工具类。

4

首先将原数组的两部分复制到新的两个数组。使用System.arraycopy方法,它 是一个native方法,速度快于Arrays.copyOf与for循环。

5

接下来对两个数组的数进行比较:设置两个索引,按升序依次给原数组赋值。首先,当其中一个数组达到末尾时,直接将另一个数组的剩余元素全部复制到原数组中。

6

对于其他的平凡情况,只需要比较两数的大小就可以决定将哪个数赋值。

7

接下来使用递归调用以上的函数,直到每一数组只剩一个元素,递归开始回溯。

8

接下来对数组{5, 2, 4, 7, 1, 3, 2, 6}进行测试,测试代码与结果如下,这与我们的预期结果相同。

推荐信息