38 lines
893 B
Java
38 lines
893 B
Java
public void mergeSort (int[] list, int lowIndex, int highIndex) {
|
||
if (lowIndex == highIndex)
|
||
return;
|
||
else {
|
||
int midIndex = (lowIndex + highIndex) / 2;
|
||
mergeSort(list, lowIndex, midIndex);
|
||
mergeSort(list, midIndex + 1, highIndex);
|
||
merge(list, lowIndex, midIndex, highIndex);
|
||
}
|
||
}
|
||
|
||
public void merge(int[] list, int lowIndex, int midIndex, int highIndex) {
|
||
int[] L = new int[midIndex - lowIndex + 2];
|
||
|
||
for (int i = lowIndex; i <= midIndex; i++) {
|
||
L[i - lowIndex] = list[i];
|
||
}
|
||
L[midIndex - lowIndex + 1] = Integer.MAX_VALUE;
|
||
int[] R = new int[highIndex - midIndex + 1];
|
||
|
||
for (int i = midIndex + 1; i <= highIndex; i++) {
|
||
R[i - midIndex - 1] = list[i];
|
||
}
|
||
R[highIndex - midIndex] = Integer.MAX_VALUE;
|
||
int i = 0, j = 0;
|
||
|
||
for (int k = lowIndex; k <= highIndex; k++) {
|
||
if (L[i] <= R[j]) {
|
||
list[k] = L[i];
|
||
i++;
|
||
}
|
||
else {
|
||
list[k] = R[j];
|
||
j++;
|
||
}
|
||
}
|
||
}
|
||
|