void merge(int *arr, int s, int e) { int mid = s + (e - s) / 2; int len1 = mid - s + 1; int len2 = e - mid; int *first = new int[len1]; int *second = new int[len2]; // copy vales int mainArrayIndex = s; for (int i = 0; i < len1; i++) { first[i] = arr[mainArrayIndex++]; } mainArrayIndex = mid + 1; for (int i = 0; i < len2; i++) { second[i] = arr[mainArrayIndex++]; } // merge 2 sorted arrays int index1 = 0; int index2 = 0; mainArrayIndex = s; while (index1 < len1 && index2 < len2) { if (first[index1] < second[index2]) { arr[mainArrayIndex++] = first[index1++]; } else { arr[mainArrayIndex++] = second[index2++]; } } while (index1 < len1) { arr[mainArrayIndex++] = first[index1++]; } while (index2 < len2) { arr[mainArrayIndex++] = second[index2++]; } } void mergeSort(int *arr, int s, int e) { if (s >= e) { return; } int mid = s + (e - s) / 2; // left part mergeSort(arr, s, mid); // right part mergeSort(arr, mid + 1, e); // merge merge(arr, s, e); }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter