practice #18
							
								
								
									
										2
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							| @ -9,8 +9,10 @@ | ||||
|           <set> | ||||
|             <option value="$PROJECT_DIR$" /> | ||||
|             <option value="$PROJECT_DIR$/clients" /> | ||||
|             <option value="$PROJECT_DIR$/common" /> | ||||
|             <option value="$PROJECT_DIR$/module4" /> | ||||
|             <option value="$PROJECT_DIR$/module5" /> | ||||
|             <option value="$PROJECT_DIR$/module6" /> | ||||
|           </set> | ||||
|         </option> | ||||
|       </GradleProjectSettings> | ||||
|  | ||||
| @ -14,6 +14,9 @@ dependencies { | ||||
|     testImplementation 'org.junit.jupiter:junit-jupiter' | ||||
|     implementation project(':module4') | ||||
|     implementation project(':module5') | ||||
|     implementation project(':module6') | ||||
|     implementation project(':common') | ||||
|     testImplementation project(':common') | ||||
| } | ||||
| java { | ||||
|     toolchain { | ||||
|  | ||||
| @ -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 { | ||||
| 
 | ||||
|  | ||||
| @ -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; | ||||
|  | ||||
| @ -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<Apple> merge = new Merge<Apple>(); | ||||
| 
 | ||||
|         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]); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										24
									
								
								common/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								common/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -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() | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.hithomelabs.princeton1.module5; | ||||
| package com.hithomelabs.princeton1.common; | ||||
| 
 | ||||
| import java.util.Objects; | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.hithomelabs.princeton1.module5; | ||||
| package com.hithomelabs.princeton1.common; | ||||
| 
 | ||||
| public class Orange { | ||||
|     private int size; | ||||
| @ -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 { | ||||
|  | ||||
| @ -30,7 +30,7 @@ public class Shell<E> extends AbstractCustomSorts<E> { | ||||
|         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){ | ||||
|  | ||||
| @ -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<Apple> apples; | ||||
| @ -26,11 +24,7 @@ class SortTest { | ||||
|     private void testSort(AbstractCustomSorts<Apple> 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; | ||||
|  | ||||
							
								
								
									
										25
									
								
								module6/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								module6/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -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() | ||||
| } | ||||
| @ -0,0 +1,46 @@ | ||||
| package com.hithomelabs.princeton1.module6; | ||||
| 
 | ||||
| import com.hithomelabs.princeton1.module5.AbstractCustomSorts; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| 
 | ||||
| public class Merge<E> extends AbstractCustomSorts<E> { | ||||
|     @Override | ||||
|     public void sort(E[] arr) { | ||||
| 
 | ||||
|         int N = arr.length; | ||||
|         // * * aux is a helper array required for merge | ||||
|         E[] aux = Arrays.copyOf(arr, N); | ||||
|         mergesort(arr, aux, 0, N-1); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private void mergesort(E[] arr, E[] aux, int lo, int hi) { | ||||
| 
 | ||||
|         if (hi <= lo) return; | ||||
|         int mid = lo + (hi - lo)/2; | ||||
|         mergesort(arr, aux, lo, mid); | ||||
|         mergesort(arr, aux, mid+1, hi); | ||||
|         merge(arr, aux, lo, mid, hi); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private void merge(E[] arr, E[] aux, int lo, int mid, int hi) { | ||||
| 
 | ||||
|         // * * creating backup of original array | ||||
|         for (int i = lo; i <= hi; i++) | ||||
|             aux[i] = arr[i]; | ||||
| 
 | ||||
|         int i = lo; | ||||
|         int j = mid+1; | ||||
|         for (int k = lo; k <= hi; k++){ | ||||
|             // * If i has already reached mid, no need to compare we insert at pointer k | ||||
|             if(i > mid) arr[k] = aux[j++]; | ||||
|             else if(j > hi) arr[k] = aux[i++]; | ||||
|             else if(less((Comparable<E>) aux[i], aux[j])) arr[k] = aux[i++]; | ||||
|             else arr[k] = aux[j++]; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @ -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<Apple> sortingAlgorithm; | ||||
|     private ArrayList<Apple> 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<Apple>(); | ||||
|         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; | ||||
|     } | ||||
| } | ||||
| @ -11,7 +11,9 @@ plugins { | ||||
| } | ||||
| 
 | ||||
| rootProject.name = 'Pricenton1' | ||||
| include('module4') | ||||
| include 'module4' | ||||
| include 'clients' | ||||
| include 'module5' | ||||
| include 'module6' | ||||
| include 'common' | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user