From 4c85964b19917b9ebaedd5d5ca5fe30ca2450c17 Mon Sep 17 00:00:00 2001 From: Soumyadeep Pal <64325089+soumyadeep2002ss@users.noreply.github.com> Date: Sun, 17 Oct 2021 00:46:55 +0530 Subject: [PATCH] Create Merge Sort with print all steps.cpp --- .../C++/Merge Sort with print all steps.cpp | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Algorithms/C++/Merge Sort with print all steps.cpp diff --git a/Algorithms/C++/Merge Sort with print all steps.cpp b/Algorithms/C++/Merge Sort with print all steps.cpp new file mode 100644 index 00000000..24009d8f --- /dev/null +++ b/Algorithms/C++/Merge Sort with print all steps.cpp @@ -0,0 +1,99 @@ +#include +using namespace std; + +void merge(int arr[], int l, int m, int r) +{ + int n1 = m - l + 1; + int n2 = r - m; + int L[n1], R[n2]; + for (int i = 0; i < n1; i++) + L[i] = arr[l + i]; + + for (int j = 0; j < n2; j++) + R[j] = arr[m + 1 + j]; + cout<<"\nAfter Break:\n"; + cout << "\n[ "; + for (int i = 0; i < n1; i++) + { + cout << L[i] << " "; + } + + for (int i = 0; i < n2; i++) + { + cout << R[i] << " "; + } + cout << "]\n"; + + int i = 0; + int j = 0; + int k = l; + while (i < n1 && j < n2) + { + if (L[i] <= R[j]) + { + arr[k] = L[i]; + i++; + } + else + { + arr[k] = R[j]; + j++; + } + k++; + } + + while (i < n1) + { + arr[k] = L[i]; + i++; + k++; + } + while (j < n2) + { + arr[k] = R[j]; + j++; + k++; + } + cout << "\nAfter Merge\n"; + cout << "[ "; + for (int i = 0; i < k; i++) + { + cout << arr[i] << " "; + } + cout << "]\n"; +} + +void mergeSort(int arr[], int l, int r) +{ + if (l >= r) + { + return; + } + int m = l + (r - l) / 2; + mergeSort(arr, l, m); + mergeSort(arr, m + 1, r); + merge(arr, l, m, r); + // cout<<"After Sort\n"; +} + +void printArray(int A[], int size) +{ + for (int i = 0; i < size; i++) + cout << A[i] << " "; +} + + +int main() +{ + int arr[] = {5,4,3,2,1}; + int arr_size = sizeof(arr) / sizeof(arr[0]); + + cout << "Given array is \n"; + printArray(arr, arr_size); + + mergeSort(arr, 0, arr_size - 1); + + cout << "\nSorted array is \n"; + printArray(arr, arr_size); + return 0; +}