diff --git a/.idea/gradle.xml b/.idea/gradle.xml index b463382..5ffbb1a 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -9,8 +9,11 @@ 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 7ba5603..d80e4c6 100644 --- a/clients/build.gradle +++ b/clients/build.gradle @@ -14,6 +14,10 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter' implementation project(':module4') implementation project(':module5') + implementation project(':module6') + implementation project(':module7') + implementation project(':common') + testImplementation project(':common') } java { toolchain { diff --git a/clients/src/main/java/com/hithomelabs/clients/module5/InsertionClient.java b/clients/src/main/java/com/hithomelabs/clients/module5/InsertionClient.java index c0d75c7..c77209f 100644 --- a/clients/src/main/java/com/hithomelabs/clients/module5/InsertionClient.java +++ b/clients/src/main/java/com/hithomelabs/clients/module5/InsertionClient.java @@ -1,8 +1,8 @@ package com.hithomelabs.clients.module5; import com.hithomelabs.princeton1.module5.Insertion; -import com.hithomelabs.princeton1.module5.Apple; -import com.hithomelabs.princeton1.module5.Orange; +import com.hithomelabs.princeton1.common.Apple; +import com.hithomelabs.princeton1.common.Orange; public class InsertionClient { diff --git a/clients/src/main/java/com/hithomelabs/clients/module5/ShellClient.java b/clients/src/main/java/com/hithomelabs/clients/module5/ShellClient.java index 504eede..765748e 100644 --- a/clients/src/main/java/com/hithomelabs/clients/module5/ShellClient.java +++ b/clients/src/main/java/com/hithomelabs/clients/module5/ShellClient.java @@ -1,6 +1,6 @@ package com.hithomelabs.clients.module5; -import com.hithomelabs.princeton1.module5.Apple; +import com.hithomelabs.princeton1.common.Apple; import com.hithomelabs.princeton1.module5.Shell; import java.util.Arrays; diff --git a/clients/src/main/java/com/hithomelabs/clients/module6/MergeClient.java b/clients/src/main/java/com/hithomelabs/clients/module6/MergeClient.java new file mode 100644 index 0000000..9b2b122 --- /dev/null +++ b/clients/src/main/java/com/hithomelabs/clients/module6/MergeClient.java @@ -0,0 +1,23 @@ +package com.hithomelabs.clients.module6; + +import com.hithomelabs.princeton1.common.Apple; +import com.hithomelabs.princeton1.module6.Merge; + +import java.util.Random; + +public class MergeClient { + + + public static void main(String[] args) { + int size = 100; + Apple[] apples = new Apple[size]; + Merge merge = new Merge(); + + for (int i = 0; i < apples.length; i++) { + apples[i] = new Apple(new Random().nextInt(1000)); + } + merge.sort(apples); + for (int i = 0; i < apples.length; i++) + System.out.println(apples[i]); + } +} 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/common/build.gradle b/common/build.gradle new file mode 100644 index 0000000..6db7aa8 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,24 @@ +plugins { + id 'java' +} + +group = 'com.hithomelabs.princeton1.common' +version = 'unspecified' + +repositories { + mavenCentral() +} + +dependencies { + testImplementation platform('org.junit:junit-bom:5.10.0') + testImplementation 'org.junit.jupiter:junit-jupiter' +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(11) + } +} +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/module5/src/main/java/com/hithomelabs/princeton1/module5/Apple.java b/common/src/main/java/com/hithomelabs/princeton1/common/Apple.java similarity index 94% rename from module5/src/main/java/com/hithomelabs/princeton1/module5/Apple.java rename to common/src/main/java/com/hithomelabs/princeton1/common/Apple.java index 131b5bb..04edf46 100644 --- a/module5/src/main/java/com/hithomelabs/princeton1/module5/Apple.java +++ b/common/src/main/java/com/hithomelabs/princeton1/common/Apple.java @@ -1,4 +1,4 @@ -package com.hithomelabs.princeton1.module5; +package com.hithomelabs.princeton1.common; import java.util.Objects; diff --git a/module5/src/main/java/com/hithomelabs/princeton1/module5/Orange.java b/common/src/main/java/com/hithomelabs/princeton1/common/Orange.java similarity index 82% rename from module5/src/main/java/com/hithomelabs/princeton1/module5/Orange.java rename to common/src/main/java/com/hithomelabs/princeton1/common/Orange.java index 02db021..455457d 100644 --- a/module5/src/main/java/com/hithomelabs/princeton1/module5/Orange.java +++ b/common/src/main/java/com/hithomelabs/princeton1/common/Orange.java @@ -1,4 +1,4 @@ -package com.hithomelabs.princeton1.module5; +package com.hithomelabs.princeton1.common; public class Orange { private int size; diff --git a/module5/build.gradle b/module5/build.gradle index 6b1dd5d..eb7a351 100644 --- a/module5/build.gradle +++ b/module5/build.gradle @@ -12,6 +12,7 @@ repositories { dependencies { testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' + testImplementation project(':common') } java { toolchain { diff --git a/module5/src/main/java/com/hithomelabs/princeton1/module5/Shell.java b/module5/src/main/java/com/hithomelabs/princeton1/module5/Shell.java index 21ce627..620accd 100644 --- a/module5/src/main/java/com/hithomelabs/princeton1/module5/Shell.java +++ b/module5/src/main/java/com/hithomelabs/princeton1/module5/Shell.java @@ -30,7 +30,7 @@ public class Shell extends AbstractCustomSorts { return 0; } /* - ! sample implementation of insertion sort as h-sort of h = 1 + * Sample implementation of insertion sort as h-sort of h = 1 * Will just be comparing the number of saps taken across both implementations */ public void insertionSort(E[] arr){ diff --git a/module5/src/test/java/com/hithomelabs/princeton1/module5/SortTest.java b/module5/src/test/java/com/hithomelabs/princeton1/module5/SortTest.java index d0b2e4a..301c6d5 100644 --- a/module5/src/test/java/com/hithomelabs/princeton1/module5/SortTest.java +++ b/module5/src/test/java/com/hithomelabs/princeton1/module5/SortTest.java @@ -4,12 +4,10 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; - +import com.hithomelabs.princeton1.common.Apple; import java.util.ArrayList; import java.util.Random; -import static org.junit.jupiter.api.Assertions.*; - class SortTest { private ArrayList apples; @@ -26,11 +24,7 @@ class SortTest { private void testSort(AbstractCustomSorts sortingAlgorithm) { for (int i = 0; i < 100; i++) apples.add(new Apple(random.nextInt(100))); - Apple[] arr = apples.toArray(new Apple[apples.size()]); - apples.sort(null); - Apple[] sorted = apples.toArray(new Apple[apples.size()]); - sortingAlgorithm.sort(arr); - assertArrayEquals(sorted, arr); + } @Test @@ -54,7 +48,6 @@ class SortTest { testSort(sortingAlgorithm); } - @AfterEach void tearDown() { sortingAlgorithm = null; diff --git a/module6/build.gradle b/module6/build.gradle new file mode 100644 index 0000000..1b6bbef --- /dev/null +++ b/module6/build.gradle @@ -0,0 +1,25 @@ +plugins { + id 'java' +} + +group = 'com.hithomelabs.princeton1.module6' +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') +} +java { + toolchain { + languageVersion = JavaLanguageVersion.of(11) + } +} +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/module6/src/main/java/com/hithomelabs/princeton1/module6/Merge.java b/module6/src/main/java/com/hithomelabs/princeton1/module6/Merge.java new file mode 100644 index 0000000..380ac31 --- /dev/null +++ b/module6/src/main/java/com/hithomelabs/princeton1/module6/Merge.java @@ -0,0 +1,13 @@ +package com.hithomelabs.princeton1.module6; + +import com.hithomelabs.princeton1.module5.AbstractCustomSorts; + +import java.util.Arrays; + +public class Merge extends AbstractCustomSorts { + @Override + public void sort(E[] arr) { + } +} + + diff --git a/module6/src/test/java/com/hithomelabs/princeton1/module6/MergeTest.java b/module6/src/test/java/com/hithomelabs/princeton1/module6/MergeTest.java new file mode 100644 index 0000000..abf0bd5 --- /dev/null +++ b/module6/src/test/java/com/hithomelabs/princeton1/module6/MergeTest.java @@ -0,0 +1,44 @@ +package com.hithomelabs.princeton1.module6; + +import com.hithomelabs.princeton1.module5.AbstractCustomSorts; +import com.hithomelabs.princeton1.common.Apple; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.Random; + +import static org.junit.jupiter.api.Assertions.*; + +class MergeTest { + + private AbstractCustomSorts sortingAlgorithm; + private ArrayList apples; + private Random random; + + @BeforeEach + void setUp() { + apples = new ArrayList<>(); + random = new Random(); + } + + @Test + @DisplayName("Merge Sort test client") + public void testSort(){ + sortingAlgorithm = new Merge(); + for(int i = 0; i < 10; i++) + apples.add(new Apple(random.nextInt(100))); + Apple[] arr = apples.toArray(new Apple[apples.size()]); + apples.sort(null); + Apple[] sorted = apples.toArray(new Apple[apples.size()]); + sortingAlgorithm.sort(arr); + assertArrayEquals(sorted, arr); + } + + @AfterEach + void tearDown() { + sortingAlgorithm = null; + } +} \ No newline at end of file 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..1483c7e --- /dev/null +++ b/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java @@ -0,0 +1,11 @@ +package com.hithomelabs.princeton1.module7; + +import com.hithomelabs.princeton1.module5.AbstractCustomSorts; + + +public class Quick extends AbstractCustomSorts { + @Override + public void sort(E[] arr) { + + } +} 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..3ff75b9 --- /dev/null +++ b/module7/src/test/java/com/hithomelabs/princeton1/module7/QuickTest.java @@ -0,0 +1,60 @@ +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); + } + + // * * Optional test for alternate sort implmentation + /* + @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 f786f9b..f9e40b6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -11,7 +11,10 @@ plugins { } rootProject.name = 'Pricenton1' -include('module4') +include 'module4' include 'clients' include 'module5' +include 'module6' +include 'common' +include 'module7'