import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] array = new int[6];
for (int i = 0; i < 6; i++) {
array[i] = (int) (Math.random() * 20);
}
System.out.println("待排序的数据为:" + Arrays.toString(array));
int[] temp = new int[array.length];
mergeSort(array, 0, array.length - 1, temp);
System.out.println("排序过后的数据为:" + Arrays.toString(array));
}
public static void mergeSort(int[] array, int left, int right, int temp[]) {
if (left < right) {
int mid = (left + right) / 2;
mergeSort(array, left, mid, temp);
mergeSort(array, mid + 1, right, temp);
merge(array, left, mid, right, temp);
}
}
public static void merge(int[] array, int left, int mid, int right, int[] temp) {
int i = left;
int j = mid + 1;
int t = 0;
while (i <= mid && j <= right) {
if (array[i] < array[j]) {
temp[t++] = array[i++];
} else {
temp[t++] = array[j++];
}
}
while (i <= mid) {
temp[t++] = array[i++];
}
while (j <= right) {
temp[t++] = array[j++];
}
t = 0;
int index = left;
while (index <= right) {
array[index++] = temp[t++];
}
}
}
归并排序的实现
最新推荐文章于 2024-08-01 09:15:00 发布