Java 归并排序(MergeSort)算法实现
public class MergeSort {
public static void merge(int [] A,int p,int q,int r){
//复制数组
int n = r-p+1;
int [] R = A.clone();
int i = p;
int j = q+1;
int k = p;
//如果两个数组B 和 C中都有数据则选择更小的加入到A中并获取下一个
while(i<=q&&j<=n-1){
if(R[i]<=R[j]){
A[k]=R[i];
i++;
}else{
A[k]=R[j];
j++;
}
k++;
}
while(i<=q) A[k++] = R[i++];
while(j<n-1) A[k++] = R[j++];
}
public static void mergeSort(int [] arr,int p, int r){
if(p < r){
int q = (p+r)/2;
mergeSort(arr,p,q);
mergeSort(arr,q+1,r);
merge(arr,p,q,r);
}
}
public static void main(String [] args){
int [] arr = {1,0,2,5,3,4};
mergeSort(arr,0,4);
for(int i:arr){
System.out.println(i);
}
}
}
merge算法
http://blog.csdn.net/baidu_22502417/article/details/46638047