public class MergeSort {
public void sort(int[] array, int start, int end, int[] tmp) {
if (start < end) {
int mid = (start + end) / 2;
sort(array, start, mid, tmp);
sort(array, mid+1, end, tmp);
merge(array, start, mid, end, tmp);
}
}
public void merge(int[] array, int start, int mid, int end, int[] tmp) {
int i = start, j = mid + 1;
int k = 0;
while (i <= mid && j <= end) {
if (array[i] < array[j]) {
tmp[k++] = array[i++];
} else {
tmp[k++] = array[j++];
}
}
while (i <= mid) {
tmp[k++] = array[i++];
}
while (j <= end) {
tmp[k++] = array[j++];
}
//复制数组
for (i = 0; i < k; i++) {
array[start+i] = tmp[i];
}
}
public static void main(String[] args){
int[] array = new int[]{50,10,90,30,70,40,80,60,20};
int[] temp = new int[array.length];
new MergeSort().sort(array, 0, array.length-1, temp);
for(int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
}
}
经典排序算法:归并排序(Merging Sort)
最新推荐文章于 2025-07-23 15:12:45 发布
本文介绍了一种归并排序算法的具体实现方式,并提供了一个Java示例程序。该程序通过递归将数组分为两部分,分别排序后再进行合并,最终实现了数组的完全排序。
2445

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



