import java.util.*;
public class MergeSort {
public int[] mergeSort(int[] A, int n) {
sort(A,0,n-1);
return A;
}
public void sort(int[] a,int left,int right){
if(left < right){
int middle = (left + right) / 2;
sort(a,left,middle);
sort(a,middle+1,right);
merge(a,left,middle,right);
}
}
public void merge(int[] a,int left,int middle,int right){
int[] temp = new int[right - left + 1];
int leftIndex = left;
int rightIndex = middle + 1;
int tempIndex = 0;
while(leftIndex <= middle && rightIndex <= right){
if(a[leftIndex] < a[rightIndex]){
temp[tempIndex++] = a[leftIndex++];
}else{
temp[tempIndex++] = a[rightIndex++];
}
}
while(leftIndex <= middle){
temp[tempIndex++] = a[leftIndex++];
}
while(rightIndex <= right){
temp[tempIndex++] = a[rightIndex++];
}
int index = 0;
while((left+index) <= right){
a[left+index] = temp[index];
index++;
}
}
}
归并排序java实现
最新推荐文章于 2021-04-14 21:46:05 发布