From 408cfed9632b6b110ea7b47a8b443a2855825bc2 Mon Sep 17 00:00:00 2001 From: Soumya Raj Darbari Date: Wed, 23 Oct 2019 12:45:23 +0530 Subject: [PATCH] Create merge_sort.cpp --- merge/merge_sort.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 merge/merge_sort.cpp diff --git a/merge/merge_sort.cpp b/merge/merge_sort.cpp new file mode 100644 index 0000000..58fa2eb --- /dev/null +++ b/merge/merge_sort.cpp @@ -0,0 +1,49 @@ +#include +using namespace std; +#define MAX 2000009 + +int a[MAX]; + +void merge(int *a, int p, int q, int r, int& c){ + int L[q-p+1],R[r-q]; + for(int i=p;i<=q;i++) L[i-p]=a[i]; + for(int i=q+1;i<=r;i++) R[i-q-1]=a[i]; + + int i=0,j=0,k=p; + while(i<=(q-p) && j<=(r-q-1)){ + if(L[i]<=R[j]){ + a[k]=L[i]; + k++,i++; + }else{ + c+=q-p-i+1; + a[k]=R[j]; + j++,k++; + } + } + for(;i<=q-p;i++) a[k++]=L[i]; + for(;j<=r-q-1;j++) a[k++]=R[j]; + return; +} + +void mergeSort(int *a, int p, int r, int& c){ + if(p