public class MergeSort {
private static int[] b;
public static void mergeSort(int[] a){
if(a == null) return;
b = new int[a.length];
merge(a, 0, a.length-1);
}
private static void merge(int[] a, int start, int end){
if(start >= end){
return;
}
int mid = (start+end)/2;
merge(a, start, mid);
merge(a, mid+1, end);
int i = start;
int j = mid+1;
int k = 0;
while((i<=mid) && (j<=end)){
if(a[i] < a[j]){
b[k] = a[i];
i++;
}else{
b[k] = a[j];
j++;
}
k++;
}
if(i > mid){
while(j<=end){
b[k] = a[j];
j++;
k++;
}
}
if(j > end){
while(i<=mid){
b[k] = a[i];
i++;
k++;
}
}
for(int m=start; m<=end; m++){
a[m] = b[m-start];
}
}
/**
* @param args
*/
public static void main(String[] args) {
int[] a = {7,2,4,8,3,5,1,9,0,6};
MergeSort.mergeSort(a);
Tools.printArray(a);
}
}归并排序
最新推荐文章于 2024-12-15 17:47:59 发布
1837

被折叠的 条评论
为什么被折叠?



