From d9ceae48a9800b391a57cd83faff4ea62b2e839b Mon Sep 17 00:00:00 2001 From: Haley Glavina <HaleyGlavina@Haleys-MacBook-Pro.local> Date: Tue, 27 Feb 2018 15:45:52 -0500 Subject: [PATCH] Haley adjusted mergesort --- src/sort/MergeSort.java | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/sort/MergeSort.java b/src/sort/MergeSort.java index 34de5f9..b3c7db4 100644 --- a/src/sort/MergeSort.java +++ b/src/sort/MergeSort.java @@ -4,20 +4,33 @@ public class MergeSort{ private static Comparable[] aux; - public static void merge(Comparable x, int n, GeneralCompare gc){ + public static void merge(Comparable[] x, int lo, int hi, GeneralCompare gc){ + int n = hi - lo; aux = new Comparable[n]; - + if(n <= 1) return; - int j = (n/2) + 1, i = 0; - merge(gc, j); - merge(gc, j+1); + // Recursively merge each half of the array + int mid = (n/2) + 1; + merge(x, lo, mid, gc); + merge(x, mid+1, hi, gc); + // Fill auxiliary array for(int k = 1; k <= n; k++){ - aux[i] = gc[i]; + aux[k] = x[k]; + } + + // + while ((mid < hi) | (lo < mid)) { + if (compare(aux[lo], aux[mid])) + x[lo++] = mid; + } + + + // Is this portion sorting the aux array? Check for(int k = 1; k <= n; k++){ if(i > j-1) x[k] = aux[j++]; -- GitLab