当前位置: 首页 > 科技观察

Java编程内功——数据结构与算法“归并排序”

时间:2023-03-19 18:00:00 科技观察

基本介绍归并排序(merge-sort)是一种基于归并思想的排序方法。该算法采用经典的分治策略(分治法将问题分成一些小问题然后递归求解,征服阶段将分阶段得到的答案“修补”在一起,即分而治之)。示意图说明:可以看到这个结构很像一棵完全二叉树。在本文中,我们使用归并排序递归实现(或迭代实现)。阶段可以理解为递归拆解子序列的过程。让我们再看看治理阶段。我们需要将两个有序的子序列合并成一个有序的序列,比如下图中最后一个合并,[4,5,7,8]和[1,2,3,6]这两个有序的子序列应该合并成最后的序列[1,2,3],4,5,6,7,8],看实现步骤。代码示例packagecom.structures.sort;blicclassMergeSort{publicstaticvoidmain(String[]args){int[]arr=newint[80000];for(inti=0;i<80000;i++){arr[i]=(int)(Math.random()*8000000);}int[]temp=newint[arr.length];longstart=System.currentTimeMillis();mergeSort(arr,0,arr.length-1,temp);longend=System.currentTimeMillis();System.out.println("耗时:"+((end-start))+"ms");/*耗时:15ms*/}//Split+CombinepublicstaticvoidmergeSort(int[]arr,intleft,intright,int[]temp){if(left