归并排序算法
import java.util.Arrays;
public class Marg {
public static void main(String[] args) {
int[] array={13,56,2,8,19,34,29};
System.out.println(Arrays.toString(array));
mergSory(array,0,array.length-1);
System.out.println(Arrays.toString(array));
}
public static void mergSory(int[] array,int left,int reight){
if (left>=reight){
return;
}
int mid=(left+reight)/2;
mergSory(array,left,mid);
mergSory(array,mid+1,reight);
merge(array,left,mid,reight);
}
private static void merge(int[] array, int left, int mid, int reight) {
int s1=left;
int s2=mid+1;
int[] ret = new int[reight-left+1];
int i=0;
while (s1<=mid&&s2<=reight){
if (array[s1]<=array[s2]){
ret[i++]=array[s1++];
}else {
ret[i++]=array[s2++];
}
}
while (s1<=mid){
ret[i++]=array[s1++];
}
while (s2<=reight){
ret[i++]=array[s2++];
}
for (int j = 0; j <ret.length ;j++) {
array[j+left]=ret[j];
}
}
}