- src/main/java
+ src
**/*.java
@@ -24,6 +25,17 @@
org.apache.maven.plugins
maven-compiler-plugin
3.15.0
+
+
+
+ main/**
+ test/**
+
+
+ main/**
+ test/**
+
+
org.apache.maven.plugins
@@ -38,6 +50,8 @@
package
-Xdoclint:-html,-missing
UTF-8
+
+ ${basedir}/src
@@ -47,18 +61,18 @@
org.junit.jupiter
junit-jupiter-api
- 5.10.2
+ 5.12.2
org.junit.jupiter
junit-jupiter-engine
- 5.10.2
+ 5.12.2
test
org.junit.vintage
junit-vintage-engine
- 5.10.2
+ 5.12.2
test
@@ -73,57 +87,4 @@
-
-
-
- ci
-
-
- src/main/java
-
-
-
-
-
- src/topics
-
- **/*.java
-
-
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
- 3.6.0
-
-
- add-source
- generate-sources
-
- add-source
-
-
-
- src/topics
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
-
-
- ${basedir}/src
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/topics/branchandbound/agents/AgentsTasks.java b/src/topics/branchandbound/agents/AgentsTasks.java
index 8beb2c9f..daf0c1e7 100644
--- a/src/topics/branchandbound/agents/AgentsTasks.java
+++ b/src/topics/branchandbound/agents/AgentsTasks.java
@@ -5,8 +5,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.branchandbound.BranchAndBound;
-import topics.branchandbound.Node;
+import topics.branchandbound.utils.BranchAndBound;
+import topics.branchandbound.utils.Node;
/**
* Task Assignment
diff --git a/src/topics/branchandbound/eightpuzzle/EightPuzzle.java b/src/topics/branchandbound/eightpuzzle/EightPuzzle.java
index c12bca47..18a6c374 100644
--- a/src/topics/branchandbound/eightpuzzle/EightPuzzle.java
+++ b/src/topics/branchandbound/eightpuzzle/EightPuzzle.java
@@ -3,8 +3,8 @@
import java.util.ArrayList;
import java.util.UUID;
-import topics.branchandbound.BranchAndBound;
-import topics.branchandbound.Node;
+import topics.branchandbound.utils.BranchAndBound;
+import topics.branchandbound.utils.Node;
/**
* The 8-Puzzle
diff --git a/src/topics/branchandbound/rectangles/Game.java b/src/topics/branchandbound/rectangles/Game.java
index 610928c8..925d0baf 100644
--- a/src/topics/branchandbound/rectangles/Game.java
+++ b/src/topics/branchandbound/rectangles/Game.java
@@ -4,7 +4,7 @@
import java.util.List;
import java.util.UUID;
-import topics.branchandbound.Node;
+import topics.branchandbound.utils.Node;
/**
* Board State for Rectangle Placement
diff --git a/src/topics/branchandbound/rectangles/RectanglesPlacement.java b/src/topics/branchandbound/rectangles/RectanglesPlacement.java
index a5733d6d..787af95a 100644
--- a/src/topics/branchandbound/rectangles/RectanglesPlacement.java
+++ b/src/topics/branchandbound/rectangles/RectanglesPlacement.java
@@ -4,8 +4,8 @@
import java.util.List;
import java.util.UUID;
-import topics.branchandbound.BranchAndBound;
-import topics.branchandbound.Node;
+import topics.branchandbound.utils.BranchAndBound;
+import topics.branchandbound.utils.Node;
/**
* Optimal Placement of Rectangles
diff --git a/src/topics/branchandbound/rectangles/RectanglesPlacementTestTime.java b/src/topics/branchandbound/rectangles/RectanglesPlacementTestTime.java
index 09a030ba..4098873d 100644
--- a/src/topics/branchandbound/rectangles/RectanglesPlacementTestTime.java
+++ b/src/topics/branchandbound/rectangles/RectanglesPlacementTestTime.java
@@ -4,7 +4,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.branchandbound.BranchAndBound;
+import topics.branchandbound.utils.BranchAndBound;
/**
* Sequential Performance Benchmark (Rectangle Placement)
diff --git a/src/topics/branchandbound/rectangles/RectanglesPlacementTestTimeThreads.java b/src/topics/branchandbound/rectangles/RectanglesPlacementTestTimeThreads.java
index ebd1f9b7..e260fd7b 100644
--- a/src/topics/branchandbound/rectangles/RectanglesPlacementTestTimeThreads.java
+++ b/src/topics/branchandbound/rectangles/RectanglesPlacementTestTimeThreads.java
@@ -4,7 +4,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.branchandbound.BranchAndBoundThreads;
+import topics.branchandbound.utils.threads.BranchAndBoundThreads;
/**
* Concurrent Performance Benchmark (Rectangle Placement)
diff --git a/src/topics/branchandbound/rectangles/RectanglesPlacementThreads.java b/src/topics/branchandbound/rectangles/RectanglesPlacementThreads.java
index a5c34b3a..70701c40 100644
--- a/src/topics/branchandbound/rectangles/RectanglesPlacementThreads.java
+++ b/src/topics/branchandbound/rectangles/RectanglesPlacementThreads.java
@@ -2,7 +2,7 @@
import java.util.List;
-import topics.branchandbound.BranchAndBoundThreads;
+import topics.branchandbound.utils.threads.BranchAndBoundThreads;
/**
* Optimal Placement of Rectangles (Concurrent Execution)
diff --git a/src/topics/branchandbound/utils/BranchAndBound.java b/src/topics/branchandbound/utils/BranchAndBound.java
index 68c15af8..9b716a15 100644
--- a/src/topics/branchandbound/utils/BranchAndBound.java
+++ b/src/topics/branchandbound/utils/BranchAndBound.java
@@ -1,4 +1,4 @@
-package topics.branchandbound;
+package topics.branchandbound.utils;
import java.util.List;
import org.slf4j.Logger;
diff --git a/src/topics/branchandbound/utils/Heap.java b/src/topics/branchandbound/utils/Heap.java
index 3194202c..a573a59e 100644
--- a/src/topics/branchandbound/utils/Heap.java
+++ b/src/topics/branchandbound/utils/Heap.java
@@ -1,4 +1,4 @@
-package topics.branchandbound;
+package topics.branchandbound.utils;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/topics/branchandbound/utils/Node.java b/src/topics/branchandbound/utils/Node.java
index 7c3f4653..4e7be3e8 100644
--- a/src/topics/branchandbound/utils/Node.java
+++ b/src/topics/branchandbound/utils/Node.java
@@ -1,4 +1,4 @@
-package topics.branchandbound;
+package topics.branchandbound.utils;
import java.util.List;
import java.util.Objects;
diff --git a/src/topics/branchandbound/utils/threads/BranchAndBoundThreads.java b/src/topics/branchandbound/utils/threads/BranchAndBoundThreads.java
index 35220f4d..faaec7ec 100644
--- a/src/topics/branchandbound/utils/threads/BranchAndBoundThreads.java
+++ b/src/topics/branchandbound/utils/threads/BranchAndBoundThreads.java
@@ -1,10 +1,12 @@
-package topics.branchandbound;
+package topics.branchandbound.utils.threads;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import topics.branchandbound.utils.Node;
+
/**
* Concurrent Branch and Bound Execution Engine
*
diff --git a/src/topics/branchandbound/utils/threads/HeapThreads.java b/src/topics/branchandbound/utils/threads/HeapThreads.java
index 4a478538..491034c8 100644
--- a/src/topics/branchandbound/utils/threads/HeapThreads.java
+++ b/src/topics/branchandbound/utils/threads/HeapThreads.java
@@ -1,4 +1,4 @@
-package topics.branchandbound;
+package topics.branchandbound.utils.threads;
import java.util.ArrayList;
import java.util.Collections;
@@ -9,6 +9,8 @@
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.PriorityBlockingQueue;
+import topics.branchandbound.utils.Node;
+
/**
*
Concurrent State Space Queue (Heap)
*
diff --git a/src/topics/branchandbound/utils/threads/WorkerThread.java b/src/topics/branchandbound/utils/threads/WorkerThread.java
index 07bd108f..caea1c8e 100644
--- a/src/topics/branchandbound/utils/threads/WorkerThread.java
+++ b/src/topics/branchandbound/utils/threads/WorkerThread.java
@@ -1,8 +1,10 @@
-package topics.branchandbound;
+package topics.branchandbound.utils.threads;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import topics.branchandbound.utils.Node;
+
/**
*
Concurrent Worker Thread
*
diff --git a/src/topics/divideconquer/maxsum/MaxSum.java b/src/topics/divideconquer/maxsum/MaxSum.java
index 050b18bd..850a9c56 100644
--- a/src/topics/divideconquer/maxsum/MaxSum.java
+++ b/src/topics/divideconquer/maxsum/MaxSum.java
@@ -91,6 +91,7 @@ private int maxSumByDivision(int left, int right, int[] v) {
}
// Prevent Integer Overflow mathematically
+ // (left + right) / 2 can overflow if left and right are large, so we use:
int center = left + (right - left) / 2;
int maxLeft = maxSumByDivision(left, center, v);
diff --git a/src/topics/divideconquer/maxsum/MaxSumBenchmark.java b/src/topics/divideconquer/maxsum/MaxSumBenchmark.java
new file mode 100644
index 00000000..a9f395c0
--- /dev/null
+++ b/src/topics/divideconquer/maxsum/MaxSumBenchmark.java
@@ -0,0 +1,62 @@
+package topics.divideconquer.maxsum;
+
+import java.util.concurrent.ThreadLocalRandom;
+
+/**
+ *
Empirical Runtime Analysis for Maximum Subarray Sum
+ *
+ * This benchmarking utility demonstrates the dramatic performance differences
+ * between algorithmic complexities: Cubic O(N³), Quadratic O(N²),
+ * and Linearithmic O(N log N).
+ *
+ *
+ * Educational Note
+ *
+ * The execution loop is strictly capped at N = 4096.
+ * If allowed to scale indefinitely, the O(N³) algorithm would cause
+ * the CPU to hang for hours due to combinatorial explosion.
+ *
+ *
+ * @author vicegd
+ */
+public class MaxSumBenchmark {
+ public static void main(String[] args) {
+ MaxSum engine = new MaxSum();
+
+ System.out.println("=======================================================================");
+ System.out.println(" BENCHMARKING MAXIMUM SUBARRAY SUM: O(N³) vs O(N²) vs O(N log N) ");
+ System.out.println("=======================================================================");
+ System.out.printf("%-12s | %-15s | %-15s | %-15s%n", "Array Size", "Cubic O(N³)", "Quadratic O(N²)", "D&C O(N log N)");
+ System.out.println("-----------------------------------------------------------------------");
+
+ // Capped at 4096 to prevent the Cubic algorithm from freezing the execution environment.
+ for (int n = 10; n <= 4096; n *= 2) {
+ int[] v = new int[n];
+
+ // Populate with both positive and negative values (crucial for this specific problem)
+ for (int i = 0; i < n; i++) {
+ v[i] = ThreadLocalRandom.current().nextInt(-1000, 1000);
+ }
+
+ // 1. Measure Cubic Time O(N³)
+ long t1 = System.currentTimeMillis();
+ engine.maxSubarrayCubic(v);
+ long t2 = System.currentTimeMillis();
+
+ // 2. Measure Quadratic Time O(N²)
+ long t3 = System.currentTimeMillis();
+ engine.maxSubarrayQuadratic(v);
+ long t4 = System.currentTimeMillis();
+
+ // 3. Measure Divide & Conquer Time O(N log N)
+ long t5 = System.currentTimeMillis();
+ engine.maxSubarrayDivideAndConquer(v);
+ long t6 = System.currentTimeMillis();
+
+ // Output formatted results
+ System.out.printf("N = %-8d | %-12d ms | %-12d ms | %-12d ms%n",
+ n, (t2 - t1), (t4 - t3), (t6 - t5));
+ }
+ System.out.println("=======================================================================");
+ }
+}
\ No newline at end of file
diff --git a/src/topics/divideconquer/median/Median.java b/src/topics/divideconquer/median/Median.java
index 47dc2f45..204a2a00 100644
--- a/src/topics/divideconquer/median/Median.java
+++ b/src/topics/divideconquer/median/Median.java
@@ -1,7 +1,5 @@
package topics.divideconquer.median;
-import topics.sorting.quicksort.Quicksort;
-
/**
* Median Calculation
*
@@ -42,10 +40,9 @@ public int medianBySorting(int[] v) {
// Prevent side-effects: Do not mutate the original array
int[] copy = v.clone();
-
- Quicksort quicksort = new Quicksort();
- quicksort.sort(copy);
-
+
+ sort(copy, 0, copy.length - 1);
+
int centerPosition = copy.length / 2;
return copy[centerPosition];
}
@@ -82,6 +79,14 @@ public int medianQuickselect(int[] v) {
* Private Quickselect recursive helper.
* Finds the k-th smallest element within the segment boundaries.
*/
+ /** Recursive quicksort using the local Util partition scheme. */
+ private void sort(int[] v, int left, int right) {
+ if (left >= right) return;
+ int pivot = Util.partition(v, left, right);
+ sort(v, left, pivot - 1);
+ sort(v, pivot + 1, right);
+ }
+
private int quickselect(int left, int right, int[] v, int k) {
// Base case: If the segment is only one element long, we've found it
if (left == right) {
diff --git a/src/topics/introduction/helloworld/HelloWorld.java b/src/topics/introduction/helloworld/HelloWorld.java
index 0f14e31c..d1af0d01 100644
--- a/src/topics/introduction/helloworld/HelloWorld.java
+++ b/src/topics/introduction/helloworld/HelloWorld.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.helloworld;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/topics/introduction/helloworld/HelloWorldTest.java b/src/topics/introduction/helloworld/HelloWorldTest.java
index 5ab3e052..6c22506b 100644
--- a/src/topics/introduction/helloworld/HelloWorldTest.java
+++ b/src/topics/introduction/helloworld/HelloWorldTest.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.helloworld;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/src/topics/introduction/maximum/GetMaximumFromList.java b/src/topics/introduction/maximum/GetMaximumFromList.java
index 929d9ca9..1a2b826c 100644
--- a/src/topics/introduction/maximum/GetMaximumFromList.java
+++ b/src/topics/introduction/maximum/GetMaximumFromList.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.maximum;
/**
*
Maximum Value Extraction
diff --git a/src/topics/introduction/maximum/GetMaximumFromListTest.java b/src/topics/introduction/maximum/GetMaximumFromListTest.java
index 95a19d5c..456fca78 100644
--- a/src/topics/introduction/maximum/GetMaximumFromListTest.java
+++ b/src/topics/introduction/maximum/GetMaximumFromListTest.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.maximum;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/src/topics/introduction/search/Search.java b/src/topics/introduction/search/Search.java
index d8495dcd..1eed542f 100644
--- a/src/topics/introduction/search/Search.java
+++ b/src/topics/introduction/search/Search.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.search;
import java.util.List;
diff --git a/src/topics/introduction/search/SearchTest.java b/src/topics/introduction/search/SearchTest.java
index 8978600a..19ed9023 100644
--- a/src/topics/introduction/search/SearchTest.java
+++ b/src/topics/introduction/search/SearchTest.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.search;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/src/topics/introduction/sum/GetAdditionFromList.java b/src/topics/introduction/sum/GetAdditionFromList.java
index 22392981..92def316 100644
--- a/src/topics/introduction/sum/GetAdditionFromList.java
+++ b/src/topics/introduction/sum/GetAdditionFromList.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.sum;
/**
* Array Summation
diff --git a/src/topics/introduction/sum/GetAdditionFromListTest.java b/src/topics/introduction/sum/GetAdditionFromListTest.java
index 1c9d3816..f67809b8 100644
--- a/src/topics/introduction/sum/GetAdditionFromListTest.java
+++ b/src/topics/introduction/sum/GetAdditionFromListTest.java
@@ -1,4 +1,4 @@
-package topics.introduction;
+package topics.introduction.sum;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/src/topics/parallel/utils/ParallelismInfoTest.java b/src/topics/parallel/utils/ParallelismInfoTest.java
index eb15e07a..90534e50 100644
--- a/src/topics/parallel/utils/ParallelismInfoTest.java
+++ b/src/topics/parallel/utils/ParallelismInfoTest.java
@@ -1,4 +1,4 @@
-package topics.parallel;
+package topics.parallel.utils;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
diff --git a/src/topics/sorting/bubble/BidirectionalBubble.java b/src/topics/sorting/bubble/BidirectionalBubble.java
index 068feae2..c736a26c 100644
--- a/src/topics/sorting/bubble/BidirectionalBubble.java
+++ b/src/topics/sorting/bubble/BidirectionalBubble.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Bidirectional Bubble Sort (Cocktail Shaker Sort)
diff --git a/src/topics/sorting/bubble/BidirectionalBubbleTest.java b/src/topics/sorting/bubble/BidirectionalBubbleTest.java
index dc5ad591..c82ea258 100644
--- a/src/topics/sorting/bubble/BidirectionalBubbleTest.java
+++ b/src/topics/sorting/bubble/BidirectionalBubbleTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/bubble/Bubble.java b/src/topics/sorting/bubble/Bubble.java
index 74555658..7da9d9ab 100644
--- a/src/topics/sorting/bubble/Bubble.java
+++ b/src/topics/sorting/bubble/Bubble.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Bubble Sort (Left-Bubbling)
diff --git a/src/topics/sorting/bubble/BubbleSentinel.java b/src/topics/sorting/bubble/BubbleSentinel.java
index 3c39170c..6b801199 100644
--- a/src/topics/sorting/bubble/BubbleSentinel.java
+++ b/src/topics/sorting/bubble/BubbleSentinel.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Bubble Sort (Optimized with Sentinel)
diff --git a/src/topics/sorting/bubble/BubbleSentinelTest.java b/src/topics/sorting/bubble/BubbleSentinelTest.java
index 64d3e76b..191250ea 100644
--- a/src/topics/sorting/bubble/BubbleSentinelTest.java
+++ b/src/topics/sorting/bubble/BubbleSentinelTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/bubble/BubbleTest.java b/src/topics/sorting/bubble/BubbleTest.java
index b7b92cfb..31fa2bbf 100644
--- a/src/topics/sorting/bubble/BubbleTest.java
+++ b/src/topics/sorting/bubble/BubbleTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/heapsort/Heapsort.java b/src/topics/sorting/heapsort/Heapsort.java
index 3530da6c..29d800b7 100644
--- a/src/topics/sorting/heapsort/Heapsort.java
+++ b/src/topics/sorting/heapsort/Heapsort.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Heapsort
diff --git a/src/topics/sorting/heapsort/HeapsortTest.java b/src/topics/sorting/heapsort/HeapsortTest.java
index 4b6558e6..72600e93 100644
--- a/src/topics/sorting/heapsort/HeapsortTest.java
+++ b/src/topics/sorting/heapsort/HeapsortTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/insertion/BinaryInsertion.java b/src/topics/sorting/insertion/BinaryInsertion.java
index b15c78c0..5fd1c97c 100644
--- a/src/topics/sorting/insertion/BinaryInsertion.java
+++ b/src/topics/sorting/insertion/BinaryInsertion.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Binary Insertion Sort
diff --git a/src/topics/sorting/insertion/BinaryInsertionTest.java b/src/topics/sorting/insertion/BinaryInsertionTest.java
index 1b7bb9d6..62847323 100644
--- a/src/topics/sorting/insertion/BinaryInsertionTest.java
+++ b/src/topics/sorting/insertion/BinaryInsertionTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/insertion/DirectInsertion.java b/src/topics/sorting/insertion/DirectInsertion.java
index 325313fd..8e692839 100644
--- a/src/topics/sorting/insertion/DirectInsertion.java
+++ b/src/topics/sorting/insertion/DirectInsertion.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Direct Insertion Sort
diff --git a/src/topics/sorting/insertion/DirectInsertionTest.java b/src/topics/sorting/insertion/DirectInsertionTest.java
index da88f817..c8653a81 100644
--- a/src/topics/sorting/insertion/DirectInsertionTest.java
+++ b/src/topics/sorting/insertion/DirectInsertionTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/mergesort/Mergesort.java b/src/topics/sorting/mergesort/Mergesort.java
index c7579356..112894a2 100644
--- a/src/topics/sorting/mergesort/Mergesort.java
+++ b/src/topics/sorting/mergesort/Mergesort.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Mergesort
diff --git a/src/topics/sorting/mergesort/MergesortTests.java b/src/topics/sorting/mergesort/MergesortTests.java
index 088e227d..00632fac 100644
--- a/src/topics/sorting/mergesort/MergesortTests.java
+++ b/src/topics/sorting/mergesort/MergesortTests.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/src/topics/sorting/quicksort/Quicksort.java b/src/topics/sorting/quicksort/Quicksort.java
index 0f1f45fe..7a051479 100644
--- a/src/topics/sorting/quicksort/Quicksort.java
+++ b/src/topics/sorting/quicksort/Quicksort.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Quicksort (Median-of-Three)
diff --git a/src/topics/sorting/quicksort/QuicksortTest.java b/src/topics/sorting/quicksort/QuicksortTest.java
index fc0df4d6..841f2e7d 100644
--- a/src/topics/sorting/quicksort/QuicksortTest.java
+++ b/src/topics/sorting/quicksort/QuicksortTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/radix/Radix.java b/src/topics/sorting/radix/Radix.java
index 809fd623..d758e24e 100644
--- a/src/topics/sorting/radix/Radix.java
+++ b/src/topics/sorting/radix/Radix.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
import java.util.ArrayDeque;
import java.util.Queue;
diff --git a/src/topics/sorting/radix/RadixTest.java b/src/topics/sorting/radix/RadixTest.java
index 5c877fef..39007f89 100644
--- a/src/topics/sorting/radix/RadixTest.java
+++ b/src/topics/sorting/radix/RadixTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/selection/DirectSelection.java b/src/topics/sorting/selection/DirectSelection.java
index 9cbc9db1..36654ae4 100644
--- a/src/topics/sorting/selection/DirectSelection.java
+++ b/src/topics/sorting/selection/DirectSelection.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Direct Selection Sort
diff --git a/src/topics/sorting/selection/DirectSelectionTest.java b/src/topics/sorting/selection/DirectSelectionTest.java
index f6235869..496565c8 100644
--- a/src/topics/sorting/selection/DirectSelectionTest.java
+++ b/src/topics/sorting/selection/DirectSelectionTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/shellsort/Shellsort.java b/src/topics/sorting/shellsort/Shellsort.java
index 46601680..4009bd84 100644
--- a/src/topics/sorting/shellsort/Shellsort.java
+++ b/src/topics/sorting/shellsort/Shellsort.java
@@ -3,8 +3,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import topics.sorting.SortingAlgorithm;
-import topics.sorting.Util;
+import topics.sorting.utils.SortingAlgorithm;
+import topics.sorting.utils.Util;
/**
* Shellsort
diff --git a/src/topics/sorting/shellsort/ShellsortTest.java b/src/topics/sorting/shellsort/ShellsortTest.java
index 33807d69..c1aecfa5 100644
--- a/src/topics/sorting/shellsort/ShellsortTest.java
+++ b/src/topics/sorting/shellsort/ShellsortTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import topics.sorting.SortingAlgorithm;
+import topics.sorting.utils.SortingAlgorithm;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/src/topics/sorting/utils/SortingAlgorithm.java b/src/topics/sorting/utils/SortingAlgorithm.java
index 6c18f547..00560ffa 100644
--- a/src/topics/sorting/utils/SortingAlgorithm.java
+++ b/src/topics/sorting/utils/SortingAlgorithm.java
@@ -1,5 +1,5 @@
-package topics.sorting;
+package topics.sorting.utils;
/**
* Sorting Algorithm Contract
diff --git a/src/topics/sorting/utils/Util.java b/src/topics/sorting/utils/Util.java
index d57b8fdd..f12798d5 100644
--- a/src/topics/sorting/utils/Util.java
+++ b/src/topics/sorting/utils/Util.java
@@ -1,4 +1,4 @@
-package topics.sorting;
+package topics.sorting.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;