From 4268ee3d22ac456d6caf681a18d80f35b0016957 Mon Sep 17 00:00:00 2001 From: Sanu Shaw <86551895+SanuShaw19@users.noreply.github.com> Date: Sat, 8 Oct 2022 05:47:36 +0530 Subject: [PATCH] Added Merge_Sort.cpp --- Merge_Sort.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Merge_Sort.cpp diff --git a/Merge_Sort.cpp b/Merge_Sort.cpp new file mode 100644 index 0000000..c1a246e --- /dev/null +++ b/Merge_Sort.cpp @@ -0,0 +1,69 @@ +#include +using namespace std; +void merge(int arr[], int p, int q, int r) { + int n1 = q - p + 1; + int n2 = r - q; + + int L[n1], M[n2]; + + for (int i = 0; i < n1; i++) + L[i] = arr[p + i]; + for (int j = 0; j < n2; j++) + M[j] = arr[q + 1 + j]; + + int i, j, k; + i = 0; + j = 0; + k = p; + + while (i < n1 && j < n2) { + if (L[i] <= M[j]) { + arr[k] = L[i]; + i++; + } else { + arr[k] = M[j]; + j++; + } + k++; + } + + while (i < n1) { + arr[k] = L[i]; + i++; + k++; + } + + while (j < n2) { + arr[k] = M[j]; + j++; + k++; + } +} + +void mergeSort(int arr[], int l, int r) { + if (l < r) { + int m = l + (r - l) / 2; + + mergeSort(arr, l, m); + mergeSort(arr, m + 1, r); + + merge(arr, l, m, r); + } +} + +void printArray(int arr[], int size) { + for (int i = 0; i < size; i++) + cout << arr[i] << " "; + cout << endl; +} + +int main() { + int arr[] = {6, 5, 12, 10, 9, 1}; + int size = sizeof(arr) / sizeof(arr[0]); + + mergeSort(arr, 0, size - 1); + + cout << "Sorted array: \n"; + printArray(arr, size); + return 0; +} \ No newline at end of file