package test;
import java.util.Arrays;
/**
* 归并排序
* @author huanghuankun
*
*/
public class MerageSort {
public static int[] merage_sort(int array[]){
if(array.length<2){
return array;
}
int middle = array.length % 2 == 0 ? array.length / 2 : (array.length - 1) / 2;
int left[] = Arrays.copyOfRange(array, 0, middle);
int right[] = Arrays.copyOfRange(array, middle,array.length);
int lres[] = merage_sort(left);
int rres[] = merage_sort(right);
return merage(lres,rres);
}
public static int[] merage(int left_array[],int right_array[]){
int merage_array[] = new int[left_array.length+right_array.length];
int left_index = 0;
int right_index = 0;
int merage_index = 0;
while(left_index<left_array.length && right_index<right_array.length){
if(left_array[left_index]<=right_array[right_index]){
merage_array[merage_index++] = left_array[left_index++];
}else{
merage_array[merage_index++] = right_array[right_index++];
}
}
if(left_index==left_array.length){
while(right_index<right_array.length){
merage_array[merage_index++] = right_array[right_index++];
}
}
if(right_index==right_array.length){
while(left_index<left_array.length){
merage_array[merage_index++] = left_array[left_index++];
}
}
return merage_array;
}
public static void print(int array[]){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+",");
}
System.out.println();
}
public static void main(String[] args){
int array[] = {1,-4,8,3,2,0,5,7,9,10};
print(array);
int sortedArray[] = merage_sort(array);
print(sortedArray);
}
}
import java.util.Arrays;
/**
* 归并排序
* @author huanghuankun
*
*/
public class MerageSort {
public static int[] merage_sort(int array[]){
if(array.length<2){
return array;
}
int middle = array.length % 2 == 0 ? array.length / 2 : (array.length - 1) / 2;
int left[] = Arrays.copyOfRange(array, 0, middle);
int right[] = Arrays.copyOfRange(array, middle,array.length);
int lres[] = merage_sort(left);
int rres[] = merage_sort(right);
return merage(lres,rres);
}
public static int[] merage(int left_array[],int right_array[]){
int merage_array[] = new int[left_array.length+right_array.length];
int left_index = 0;
int right_index = 0;
int merage_index = 0;
while(left_index<left_array.length && right_index<right_array.length){
if(left_array[left_index]<=right_array[right_index]){
merage_array[merage_index++] = left_array[left_index++];
}else{
merage_array[merage_index++] = right_array[right_index++];
}
}
if(left_index==left_array.length){
while(right_index<right_array.length){
merage_array[merage_index++] = right_array[right_index++];
}
}
if(right_index==right_array.length){
while(left_index<left_array.length){
merage_array[merage_index++] = left_array[left_index++];
}
}
return merage_array;
}
public static void print(int array[]){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+",");
}
System.out.println();
}
public static void main(String[] args){
int array[] = {1,-4,8,3,2,0,5,7,9,10};
print(array);
int sortedArray[] = merage_sort(array);
print(sortedArray);
}
}