diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index c8d9cd4..5ffbb1a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,6 +13,7 @@
+
diff --git a/Module2/15UnionFind.pdf b/Slides/Module2/15UnionFind.pdf
similarity index 100%
rename from Module2/15UnionFind.pdf
rename to Slides/Module2/15UnionFind.pdf
diff --git a/Module3/14AnalysisOfAlgorithms.pdf b/Slides/Module3/14AnalysisOfAlgorithms.pdf
similarity index 100%
rename from Module3/14AnalysisOfAlgorithms.pdf
rename to Slides/Module3/14AnalysisOfAlgorithms.pdf
diff --git a/Module4/13StacksAndQueues.pdf b/Slides/Module4/13StacksAndQueues.pdf
similarity index 100%
rename from Module4/13StacksAndQueues.pdf
rename to Slides/Module4/13StacksAndQueues.pdf
diff --git a/Module5/21ElementarySorts.pdf b/Slides/Module5/21ElementarySorts.pdf
similarity index 100%
rename from Module5/21ElementarySorts.pdf
rename to Slides/Module5/21ElementarySorts.pdf
diff --git a/Module6/22Mergesort.pdf b/Slides/Module6/22Mergesort.pdf
similarity index 100%
rename from Module6/22Mergesort.pdf
rename to Slides/Module6/22Mergesort.pdf
diff --git a/Module7/23Quicksort.pdf b/Slides/Module7/23Quicksort.pdf
similarity index 100%
rename from Module7/23Quicksort.pdf
rename to Slides/Module7/23Quicksort.pdf
diff --git a/Module8/24PriorityQueues.pdf b/Slides/Module8/24PriorityQueues.pdf
similarity index 100%
rename from Module8/24PriorityQueues.pdf
rename to Slides/Module8/24PriorityQueues.pdf
diff --git a/Module9/31ElementarySymbolTables.pdf b/Slides/Module9/31ElementarySymbolTables.pdf
similarity index 100%
rename from Module9/31ElementarySymbolTables.pdf
rename to Slides/Module9/31ElementarySymbolTables.pdf
diff --git a/Module9/32BinarySearchTrees.pdf b/Slides/Module9/32BinarySearchTrees.pdf
similarity index 100%
rename from Module9/32BinarySearchTrees.pdf
rename to Slides/Module9/32BinarySearchTrees.pdf
diff --git a/clients/build.gradle b/clients/build.gradle
index 49c6430..d80e4c6 100644
--- a/clients/build.gradle
+++ b/clients/build.gradle
@@ -15,6 +15,7 @@ dependencies {
implementation project(':module4')
implementation project(':module5')
implementation project(':module6')
+ implementation project(':module7')
implementation project(':common')
testImplementation project(':common')
}
diff --git a/clients/src/main/java/com/hithomelabs/clients/module7/QuickSortClient.java b/clients/src/main/java/com/hithomelabs/clients/module7/QuickSortClient.java
new file mode 100644
index 0000000..2717419
--- /dev/null
+++ b/clients/src/main/java/com/hithomelabs/clients/module7/QuickSortClient.java
@@ -0,0 +1,22 @@
+package com.hithomelabs.clients.module7;
+
+import com.hithomelabs.princeton1.common.Apple;
+import com.hithomelabs.princeton1.module7.Quick;
+
+import java.util.Random;
+
+public class QuickSortClient {
+
+ public static void main(String[] args) {
+ int size = 100;
+ Apple[] apples = new Apple[size];
+ Quick quick = new Quick();
+
+ for (int i = 0; i < apples.length; i++) {
+ apples[i] = new Apple(new Random().nextInt(1000));
+ }
+ quick.sort(apples);
+ for (int i = 0; i < apples.length; i++)
+ System.out.println(apples[i]);
+ }
+}
diff --git a/module7/build.gradle b/module7/build.gradle
new file mode 100644
index 0000000..921ffaa
--- /dev/null
+++ b/module7/build.gradle
@@ -0,0 +1,21 @@
+plugins {
+ id 'java'
+}
+
+group = 'com.hithomelabs.princeton1.module7'
+version = 'unspecified'
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testImplementation platform('org.junit:junit-bom:5.10.0')
+ testImplementation 'org.junit.jupiter:junit-jupiter'
+ implementation project(':module5')
+ testImplementation project(':common')
+}
+
+test {
+ useJUnitPlatform()
+}
\ No newline at end of file
diff --git a/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java b/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java
new file mode 100644
index 0000000..c3e4c40
--- /dev/null
+++ b/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java
@@ -0,0 +1,54 @@
+package com.hithomelabs.princeton1.module7;
+
+import com.hithomelabs.princeton1.module5.AbstractCustomSorts;
+
+
+public class Quick extends AbstractCustomSorts {
+ @Override
+ public void sort(E[] arr) {
+ int N = arr.length;
+ quickSort(arr, 0, N - 1);
+ }
+
+ public void altSort(E[] arr) {
+ int N = arr.length;
+ altQuickSort(arr, 0, N-1);
+ }
+
+ private void altQuickSort(E[] arr, int lo, int hi) {
+ if (lo >= hi) return;
+ int i = lo + 1;
+ int j = i;
+ while(j <= hi){
+ if(less((Comparable) arr[j], arr[lo])){
+ exch(arr, i, j);
+ i++;
+ }
+ j++;
+ }
+ exch(arr, i-1, lo);
+ altQuickSort(arr, lo, i-2);
+ altQuickSort(arr, i, hi);
+ }
+
+ private void quickSort(E[] arr, int lo, int hi) {
+
+ if (lo >= hi) return;
+ int i = lo;
+ int j = hi+1;
+ while(true){
+ while(less((Comparable) arr[++i], arr[lo])){
+ if(i == hi) break;
+ }
+ while(!less((Comparable) arr[--j], arr[lo])){
+ if (j == lo ) break;
+ }
+ if(j<=i) break;
+ exch(arr, i , j);
+ }
+ exch(arr, j, lo);
+ quickSort(arr, lo, j-1);
+ quickSort(arr, j+1, hi);
+
+ }
+}
diff --git a/module7/src/test/java/com/hithomelabs/princeton1/module7/QuickTest.java b/module7/src/test/java/com/hithomelabs/princeton1/module7/QuickTest.java
new file mode 100644
index 0000000..e252c68
--- /dev/null
+++ b/module7/src/test/java/com/hithomelabs/princeton1/module7/QuickTest.java
@@ -0,0 +1,56 @@
+package com.hithomelabs.princeton1.module7;
+
+import com.hithomelabs.princeton1.common.Apple;
+import org.junit.jupiter.api.*;
+
+import java.util.ArrayList;
+import java.util.Random;
+import static org.junit.jupiter.api.Assertions.*;
+
+class QuickTest {
+
+ private Quick quick;
+ private ArrayList apples;
+ private Random random;
+
+ @BeforeEach
+ void setUp() {
+ quick = new Quick();
+ apples = new ArrayList();
+ random = new Random();
+ }
+
+ @Test
+ @DisplayName("testing Quick sort default implementation")
+ public void testSort(){
+
+ for(int i = 0; i < 100; i++)
+ apples.add(new Apple(random.nextInt(1000)));
+ Apple[] arr = apples.toArray(new Apple[apples.size()]);
+ quick.sort(arr);
+ apples.sort(null);
+ Apple[] sorted = apples.toArray(new Apple[apples.size()]);
+ Assertions.assertArrayEquals(sorted, arr);
+ }
+
+ @Test
+ @DisplayName("testing Quick sort default implementation")
+ public void testAltSort(){
+
+ for(int i = 0; i < 100; i++)
+ apples.add(new Apple(random.nextInt(1000)));
+ Apple[] arr = apples.toArray(new Apple[apples.size()]);
+ quick.altSort(arr);
+ apples.sort(null);
+ Apple[] sorted = apples.toArray(new Apple[apples.size()]);
+ Assertions.assertArrayEquals(sorted, arr);
+ }
+
+
+ @AfterEach
+ void tearDown() {
+ quick = null;
+ apples = null;
+ random = null;
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index cd86a6c..f9e40b6 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -16,4 +16,5 @@ include 'clients'
include 'module5'
include 'module6'
include 'common'
+include 'module7'