Skip to content

Commit 190aa49

Browse files
authored
Update MergeSort.java
1 parent 1e2c592 commit 190aa49

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/main/java/com/thealgorithms/sorts/MergeSort.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,23 @@ private <T extends Comparable<T>> void doSort(T[] arr, int left, int right) {
5050
*/
5151
@SuppressWarnings("unchecked")
5252
private <T extends Comparable<T>> void merge(T[] arr, int left, int mid, int right) {
53-
// Copy only the necessary portion of arr into aux
54-
System.arraycopy(arr, left, aux, left, right - left + 1);
53+
// Create a temporary array to hold the merged result
54+
Comparable[] aux = new Comparable[right - left + 1];
55+
System.arraycopy(arr, left, aux, 0, aux.length);
5556

56-
int i = left;
57-
int j = mid + 1;
57+
int i = 0; // Index for the left half
58+
int j = mid - left + 1; // Index for the right half
5859

5960
for (int k = left; k <= right; k++) {
60-
if (i > mid) {
61-
arr[k] = aux[j++];
62-
} else if (j > right) {
63-
arr[k] = aux[i++];
64-
} else if (less(aux[j], aux[i])) {
65-
arr[k] = aux[j++];
61+
if (i >= mid - left + 1) {
62+
arr[k] = (T) aux[j++];
63+
} else if (j >= right - left + 1 || less((T) aux[i], (T) aux[j])) {
64+
arr[k] = (T) aux[i++];
6665
} else {
67-
arr[k] = aux[i++];
66+
arr[k] = (T) aux[j++];
6867
}
6968
}
7069
}
7170

71+
7272
}

0 commit comments

Comments
 (0)