public class MergeSort {
private static void mergeSort(int[] A, int start, int end) {
if (start >= end)
return;
int mid = start + (end - start) / 2;
mergeSort(A, start, mid);
mergeSort(A, mid + 1, end);
int tmp[] = new int[end - start + 1];
int i = 0, p = start, q = mid + 1;
while (p <= mid && q <= end) {
if (A[p] < A[q]) {
tmp[i] = A[p];
i++;
p++;
}
else {
tmp[i] = A[q];
i++;
q++;
}
}
if (p <= mid)
while (p <= mid) {
tmp[i] = A[p];
i++;
p++;
}
if (q <= end)
while (q <= end) {
tmp[i] = A[q];
i++;
q++;
}
for (int j = 0; j < end - start + 1; ++j)
A[start + j] = tmp[j];
}
public static void tester() {
int[] A = new int[1000];
for (int i = 0; i < 1000; ++i)
A[i] = (int)(Math.random() * 1000);
mergeSort(A, 0, A.length - 1);
for (int i = 0; i < 1000; ++i)
System.out.print(A[i] + " ");
}
}
归并排序的Java实现
最新推荐文章于 2023-12-11 10:45:47 发布