代码
import java.util.Random;
public class test {
public static void main(String[] args) {
Random rand = new Random();
int[] numbers = new int[10];
for (int i = 0; i < numbers.length; i++){
numbers[i] = rand.nextInt(1000000);
}
System.out.println("Before:");
printArray(numbers);
mergeSort(numbers);
System.out.println("\nAfter:");
printArray(numbers);
}
private static void mergeSort(int[] inputArray){
int n = inputArray.length;
if (n < 2){
return;
}
int mid = n / 2;
int[] leftHalf = new int[mid];
int[] rightHalf = new int[n - mid];
for (int i = 0; i < mid; i++){
leftHalf[i] = inputArray[i];
}
for (int i = mid; i < n; i++){
rightHalf[i - mid] = inputArray[i];
}
mergeSort(leftHalf);
mergeSort(rightHalf);
merge(inputArray,leftHalf,rightHalf);
}
private static void merge(int[] inputArray, int[] leftHalf, int[] rightHalf){
int ln = leftHalf.length;
int rn = rightHalf.length;
int i = 0, j = 0, k = 0;
while(i < ln && j < rn){
if (leftHalf[i] <= rightHalf[j]){
inputArray[k] = leftHalf[i];
i++;
} else{
inputArray[k] = rightHalf[j];
j++;
}
k++;
}
while (i < ln){
inputArray[k++] = leftHalf[i++];
}
while (j < rn){
inputArray[k++] = leftHalf[j++];
}
}
private static void printArray(int[] numbers){
for (int i: numbers){
System.out.print(i + " ");
}
System.out.println("\n");
}
}