From 246ebd57055650ee9bd07d0e5b5cc8469344ba6e Mon Sep 17 00:00:00 2001
From: Schankula Christopher <schankuc@mcmaster.ca>
Date: Wed, 28 Mar 2018 09:46:54 -0400
Subject: [PATCH] use quickselect for KDT (failing...)

---
 src/sort/KDT.java         |  2 +-
 src/sort/QuickSelect.java | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/sort/KDT.java b/src/sort/KDT.java
index cb6b9bc..681deb7 100644
--- a/src/sort/KDT.java
+++ b/src/sort/KDT.java
@@ -119,7 +119,7 @@ public class KDT<KeyVal extends Comparable<KeyVal>> implements Serializable {
 		int axis = depth % getK();
 		
 		int mid = (lo + hi) / 2;
-		MergeSort.sort(keyvals, lo, hi, axes.get(axis));
+		QuickSelect.median(keyvals, lo, hi, axes.get(axis));
 		KeyVal median = (KeyVal) keyvals[mid];
 		
 		//TODO: fix size
diff --git a/src/sort/QuickSelect.java b/src/sort/QuickSelect.java
index 6233522..1b7e0e3 100644
--- a/src/sort/QuickSelect.java
+++ b/src/sort/QuickSelect.java
@@ -30,6 +30,16 @@ public class QuickSelect {
 		sort(a, 0, a.length - 1, a.length/2, gc);
 	}
 	
+	/**
+	 * Partially sorts a comparable array such that elements smaller than the median occur in
+	 * the first half of the array, and elements larger than the median occur in the second half
+	 * @param a Array of comparable items
+	 * @param gc Lambda function to compare items
+	 */
+	public static <T> void median(Comparable<T>[] a, int lo, int hi, GeneralCompare<T> gc) {
+		sort(a, lo, hi, (hi - lo) / 2, gc);
+	}
+	
 	/**
 	 * Partially sorts a comparable array such that elements smaller than the kth largest element
 	 * occur in the first half of the array, and larger elements occur in the second half
-- 
GitLab