import java.util.Arrays;
public class 合并排序 {
public static void main(String[] args) {
//System.out.println(Arrays.toString(c));
int[] d = new int[]{1,3,5,7,9,2,4,6,8};
int[] f = mergeSort(d);
System.out.println(Arrays.toString(f));
}
private static int[] merge(int[] a, int[] b) {
int c[] = new int[a.length + b.length];
int ca = 0;
int cb = 0;
for(int i = 0; i < c.length ;i++){
if( ca >= a.length ){
c[i] = b[cb++];
}
else if( cb >= b.length ){
c[i] = a[ca++];
}
else if( a[ca] < b[cb] ){
c[i] = a[ca++];
}else if( a[ca] > b[cb] ){
c[i] = b[cb++];
}
}
return c;
}
private static int[] mergeSort(int[] a) {
if(a.length == 1) return a ;
int left = a.length / 2;
int right = a.length - left;
int[] leftArr = new int[left];
int[] rightArr = new int[right];
System.arraycopy(a, 0, leftArr, 0, left);
System.arraycopy(a, left, rightArr, 0, right);
// System.out.println(Arrays.toString(leftArr));
// System.out.println(Arrays.toString(righttArr));
leftArr = mergeSort(leftArr);
rightArr = mergeSort(rightArr);
return merge(leftArr,rightArr);
}
}
合并排序
最新推荐文章于 2022-11-27 14:28:13 发布