归并排序--Java
来源:互联网 发布:数据库的算法 编辑:程序博客网 时间:2024/05/01 21:50
归并排序采用分治法,其速度仅次于快速排序,且是一种稳定的排序算法。即相等的元素的顺序不会改变,如输入记录3(1),2(2),4(3),4(4),1(5),排序后得到,1(5),2(2),3(1),4(3),4(4),其中的4(3),4(4)就是输入时的顺序,因此对于某些数据要按输入时的顺序作为指标排序时,这相对于快速排序来说是优势。
对于数列(5,2,4,7,1,3,2,6),其排序过程如下:
初始状态:(5,2,4,7,1,3,2,6)
初次归并:(5,2)(4,7)(1,3)(2,6)
二次归并:(2,4,5,7)(1,2,3,6)
三次归并:(1,2,2,3,4,5,6,7}
如下:
public class MergeSortClass {public static int[] mergeSort(int[] list){if(list.length==1){return list;}else{int[] listL=new int[list.length/2];int[] listR=new int[list.length-list.length/2];int center=list.length/2;for(int i=0;i<center;i++){listL[i]=list[i];}for(int i=center,j=0;i<list.length;i++,j++){listR[j]=list[i];}int[] sortedListL=mergeSort(listL);int[] sortedListR=mergeSort(listR);int[] o_list=mergeTwoSort(sortedListL,sortedListR);return o_list;}}public static int[] mergeTwoSort(int[] sortedListL,int[] sortedListR){int i=0,j=0;int[] o_list=new int[sortedListL.length+sortedListR.length];int foot=0;while(i<sortedListL.length && j<sortedListR.length){if(sortedListL[i]<sortedListR[j]){o_list[foot]=sortedListL[i];i++;}else{o_list[foot]=sortedListR[j];j++;}foot++;}if(i==sortedListL.length){while(j<sortedListR.length){o_list[foot++]=sortedListR[j++];}}else{while(i<sortedListL.length){o_list[foot++]=sortedListL[i++];}}return o_list;}public static void outPut(int[] list){for(int i=0;i<list.length;i++){System.out.print(list[i]+" ");}}public static void main(String[] args){int[] list={5,2,4,7,1,3,2,6};int [] list1=mergeSort(list);outPut(list1);}}
0 0
- java排序--归并排序
- 排序-归并排序-Java
- 归并排序Java实现
- java归并排序算法
- JAVA归并排序算法
- java归并排序
- java归并排序
- Java实现归并排序
- 归并排序(java)
- 25、JAVA归并排序
- java 归并排序
- java归并排序
- Java归并排序
- 归并排序 java
- Java实现归并排序
- 归并排序Java实现
- java 归并排序
- Java归并排序
- 理解ORACLE数据库字符集
- CareerCup Old cell-phones game "snake"
- 北风网:学完JAVA后的就业方向
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- yum源导入KEY值----warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
- 归并排序--Java
- U-boot分析第0章------------------ 编译烧写
- Unity3D 主角面朝方向一定区域内对象角度计算
- 一位ACMer过来人的心得
- JAVA环境搭建
- ACM都要学些什么
- linux笔试题
- SQL 函数总结说明
- (advanced) 动态规划 UVA 1437 - String painter