diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 5ffbb1a..186ae07 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -14,6 +14,7 @@
+
diff --git a/module5/src/main/java/com/hithomelabs/princeton1/module5/AbstractCustomSorts.java b/module5/src/main/java/com/hithomelabs/princeton1/module5/AbstractCustomSorts.java
index 86bfbbd..1df70bc 100644
--- a/module5/src/main/java/com/hithomelabs/princeton1/module5/AbstractCustomSorts.java
+++ b/module5/src/main/java/com/hithomelabs/princeton1/module5/AbstractCustomSorts.java
@@ -6,6 +6,9 @@ public abstract class AbstractCustomSorts {
// TODO: Implement this method
public void exch(E[] arr, int j, int i) {
+ E temp = arr[j];
+ arr[j] = arr[i];
+ arr[i] = temp;
}
// TODO: Implement this method
diff --git a/module5/src/main/java/com/hithomelabs/princeton1/module5/Insertion.java b/module5/src/main/java/com/hithomelabs/princeton1/module5/Insertion.java
index a4117d4..6fa7efa 100644
--- a/module5/src/main/java/com/hithomelabs/princeton1/module5/Insertion.java
+++ b/module5/src/main/java/com/hithomelabs/princeton1/module5/Insertion.java
@@ -3,7 +3,29 @@ package com.hithomelabs.princeton1.module5;
public class Insertion extends AbstractCustomSorts {
@Override
public void sort(E[] arr) {
+ int N = arr.length;
+ for(int i=0; i0; j--){
+ if(less( (Comparable) arr[j], arr[j-1]))
+ exch(arr, j, j-1);
+ else
+ break;
+ }
+ }
+ }
+
+ public void sort(E[] arr, int h) {
+ int N = arr.length;
+
+ for(int i=0; i0; j=j-h){
+ if(less( (Comparable) arr[j], arr[j-1]))
+ exch(arr, j, j-1);
+ else
+ break;
+ }
+ }
}
}
diff --git a/module5/src/main/java/com/hithomelabs/princeton1/module5/Selection.java b/module5/src/main/java/com/hithomelabs/princeton1/module5/Selection.java
index d483434..6638859 100644
--- a/module5/src/main/java/com/hithomelabs/princeton1/module5/Selection.java
+++ b/module5/src/main/java/com/hithomelabs/princeton1/module5/Selection.java
@@ -7,7 +7,16 @@ package com.hithomelabs.princeton1.module5;
public class Selection extends AbstractCustomSorts{
@Override
public void sort(E[] arr) {
+ int N=arr.length;
+ for(int i=0; i) arr[j], arr[min]))
+ min=j;
+ }
+ exch(arr, min, i);
+ }
}
}
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 620accd..7abc6fd 100644
--- a/module5/src/main/java/com/hithomelabs/princeton1/module5/Shell.java
+++ b/module5/src/main/java/com/hithomelabs/princeton1/module5/Shell.java
@@ -24,6 +24,10 @@ public class Shell extends AbstractCustomSorts {
*/
@Override
public void sort(E[] arr) {
+ Insertion sortingAlgorithm = new Insertion<>();
+ sortingAlgorithm.sort(arr, 7);
+ sortingAlgorithm.sort(arr, 3);
+ sortingAlgorithm.sort(arr);
}
private int hsort(E[] arr, int h, MetaData metadata) {
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 301c6d5..e2aa21d 100644
--- a/module5/src/test/java/com/hithomelabs/princeton1/module5/SortTest.java
+++ b/module5/src/test/java/com/hithomelabs/princeton1/module5/SortTest.java
@@ -6,51 +6,91 @@ 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.Arrays;
+import java.util.Collections;
import java.util.Random;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
class SortTest {
- private ArrayList apples;
+ private Apple[] apples, applesCopy;
private AbstractCustomSorts sortingAlgorithm;
private Random random;
@BeforeEach
void setUp() {
- apples = new ArrayList();
+ apples = new Apple[100];
+// applesCopy = new Apple[100];
//sortingAlgorithm = new Selection();
random = new Random();
}
- private void testSort(AbstractCustomSorts sortingAlgorithm) {
- for (int i = 0; i < 100; i++)
- apples.add(new Apple(random.nextInt(100)));
+ private void testSort() {
+ int value;
+ for (int i = 0; i < 100; i++) {
+ value = random.nextInt(100);
+ apples[i] = new Apple(value);
+// applesCopy[i] = new Apple(value);
+ }
}
+ private boolean test(){
+ for(int i=0;i<99;i++){
+ if(apples[i].compareTo(apples[i+1]) > 0)
+ return false;
+ }
+ return true;
+ }
+
@Test
@DisplayName("Testing Insertion sort functionality")
public void testInsertionSort() {
sortingAlgorithm = new Insertion();
- testSort(sortingAlgorithm);
+ //populates random apples
+ testSort();
+
+ //calling sort function
+ sortingAlgorithm.sort(apples);
+
+ //checking if sorted array has any element which is less than preceeding one
+ assertTrue(test());
}
@Test
@DisplayName("Testing Selection sort functionality")
public void testSelectionSort() {
sortingAlgorithm = new Selection();
- testSort(sortingAlgorithm);
+ //populates random apples
+ testSort();
+
+ //calling sort function
+ sortingAlgorithm.sort(apples);
+
+ //checking if sorted array has any element which is less than preceeding one
+ assertTrue(test());
}
@Test
@DisplayName("Testing Shell sort functionality")
public void testShellSort() {
- sortingAlgorithm = new Shell<>();
- testSort(sortingAlgorithm);
+ sortingAlgorithm = new Shell();
+ //populates random apples
+ testSort();
+
+ //calling sort function
+ sortingAlgorithm.sort(apples);
+
+ //checking if sorted array has any element which is less than preceeding one
+ assertTrue(test());
}
@AfterEach
void tearDown() {
sortingAlgorithm = null;
apples = null;
+ applesCopy = null;
}
}
\ No newline at end of file