diff --git a/sorting/merge_sort.cpp b/sorting/merge_sort.cpp index 8beb4e44a..54b385d89 100644 --- a/sorting/merge_sort.cpp +++ b/sorting/merge_sort.cpp @@ -43,8 +43,8 @@ void merge(int *arr, int l, int m, int r) { i = 0; j = 0; k = l; - while (i < n1 && j < n2) { - if (L[i] <= R[j]) { + while (i < n1 || j < n2) { + if (j >= n2 || (i < n1 && L[i] <= R[j])) { arr[k] = L[i]; i++; } else { @@ -54,18 +54,6 @@ void merge(int *arr, int l, int m, int r) { k++; } - while (i < n1) { - arr[k] = L[i]; - i++; - k++; - } - - while (j < n2) { - arr[k] = R[j]; - j++; - k++; - } - delete[] L; delete[] R; }