您的位置:首页 > 编程语言 > Java开发

归并排序——java实现

2014-02-13 12:58 183 查看
public class MergerSort {
public int[] sort(int[] arrs){
if(arrs.length < 2){
return arrs;
}
//		 int mid = arrs.length % 2 == 0 ? arrs.length / 2 : (arrs.length - 1) / 2;
int mid = arrs.length/2;
int[] left = Arrays.copyOfRange(arrs, 0, mid);
int[] right = Arrays.copyOfRange(arrs, mid, arrs.length);
int[] lres = sort(left);
int[] rres = sort(right);
return merger(lres, rres);
}
public int[] merger(int[] lres,int[] rres){
int[] b = new int[lres.length+rres.length];
int l = 0;
int r = 0;
int i = 0;

while(l<lres.length&&r<rres.length){
if(lres[l]<=rres[r]){
b[i] = lres[l];
i++;
l++;
}else{
b[i] = rres[r];
i++;
r++;
}
}

if(l == lres.length){
while(r < rres.length){
b[i] = rres[r];
i++;
r++;
}
}

if(r == rres.length){
while(l < lres.length){
b[i] = lres[l];
i++;
l++;
}
}
return b;
}

public static void main(String[] args) {
Random random = new Random();
int[] msData = new int[11];
String beforeSort = "";
String afterSort = "";
for(int i=0;i<msData.length;i++){ //随机生成11个排序数
Integer a =random.nextInt(100);
msData[i]= a;
beforeSort = beforeSort + msData[i] + " ";
}
System.out.println(beforeSort);

MergerSort ms = new MergerSort();
msData = ms.sort(msData);

for(int i=0;i<msData.length;i++){

afterSort = afterSort + msData[i] + " ";
}
System.out.println(afterSort);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 归并排序 算法