归并排序Java实现
public class MergeSort {
public static void sort(int[] a,int left, int right){
if(left >= right) return;
int center = (left + right) >> 1;
sort(a, left, center);
sort(a, center + 1, right);
merge(a, left, center, right);
}
public static void merge(int[] data, int left, int center, int right){
int [] tmpArr = new int[right + 1];
int mid = center + 1;
int index = left;
int tmp = left;
while(left <= center && mid <= right){
tmpArr[index++] = (data[left] <= data[mid]) ? data[left++] : data[mid++];
}
while(left <= center){
tmpArr[index++] = data[left++];
}
while(mid <= right){
tmpArr[index++] = data[mid++];
}
for(int i=tmp; i<= right; i++)
data[i] = tmpArr[i];
}
public static void main(String[] args) {
int[] a = {49, 38, 65, 97, 76, 13, 27, 50};
sort(a, 0, a.length -1 );
for(int b : a)
System.out.print(b+" ");
}
}