From 688c89b3da2ca8bc39ba3620623b2f333026415e Mon Sep 17 00:00:00 2001 From: Pratyush Singh Date: Sun, 14 Feb 2016 23:38:27 +0530 Subject: [PATCH] Corrected logic error --- lab2/3/merge_sort_sdm.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lab2/3/merge_sort_sdm.cpp b/lab2/3/merge_sort_sdm.cpp index 0f9093f..1e98728 100644 --- a/lab2/3/merge_sort_sdm.cpp +++ b/lab2/3/merge_sort_sdm.cpp @@ -35,13 +35,18 @@ void merge_sort_sdm(int *arr, int length, int *grpArr, int grpLength) { if(grpLength == 0) return; + int start = 0; - for(int i = 0 ; i < grpLength ; i ++) + int newGrpArr[grpLength], grpCtr = 0; + for(int i = 0 ; i < grpLength ; i += 2 ) { int mid = grpArr[i]; - int end = grpArr[i+1]; + int end = (i+1 <= grpLength)?grpArr[i+1]:grpArr[i]; + newGrpArr[grpCtr++] = end; merge(arr, start, mid, end); + start = end + 1; } + merge_sort_sdm(arr, length, newGrpArr, grpCtr-1); } int main(void)