0
点赞
收藏
分享

微信扫一扫

算法实践篇-合并排序


package com.sort;
/**
*
* @author Administrator
*nlogn
*/
public class MergeSort {

private static void merge(int [] source,int left,int right){
if(left==right){
return;
}
int middle=(left+right)/2;
merge(source,left,middle);
merge(source,middle+1,right);
int[]tmp=new int[right-left+1];
int l=0;
int lindex=left;
int rindex=middle+1;
for(;lindex<=middle;){
if(rindex>right){
break;
}
if(source[lindex]<source[rindex]){
tmp[l++]=source[lindex];
lindex++;
}else{
tmp[l++]=source[rindex];
rindex++;
}
}
if(lindex==middle+1&&rindex<=right){
for(;rindex<=right;rindex++){
tmp[l++]=source[rindex];
}
}
if(rindex>right&&lindex<=middle){
for(;lindex<=middle;lindex++){
tmp[l++]=source[lindex];
}
}

l=0;
for(int x=left;x<=right;x++){
source[x]=tmp[l++];
}
}

public static void main(String[] args) {
int[] data=new int[]{4,5,2,9,1,0,7};
for(int i=0;i<data.length;i++){
System.out.print(data[i]+" ");
}
System.out.println();
merge(data,0,data.length-1);;
for(int i=0;i<data.length;i++){
System.out.print(data[i]+" ");
}
System.out.println();
}

}

 

举报

相关推荐

0 条评论