diff --git a/big-o/src/main/java/com/josdem/algorithms/HalfSquareRunner.java b/big-o/src/main/java/com/josdem/algorithms/HalfSquareRunner.java new file mode 100644 index 0000000..783a992 --- /dev/null +++ b/big-o/src/main/java/com/josdem/algorithms/HalfSquareRunner.java @@ -0,0 +1,28 @@ +package com.josdem.algorithms; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; + +/* Type: Square Time Algorithms – O(n^2/2) + Description: Half-square increment amount of time based on collection size + */ + +public class HalfSquareRunner { + private final Logger log = Logger.getLogger(this.getClass().getName()); + public List getTargetNumbers(List numbers, int target) { + List result = new ArrayList<>(); + for(int i=0; i < numbers.size(); i++){ + for(int j = i + 1; j < numbers.size(); j++){ + int a = numbers.get(i); + int b = numbers.get(j); + if (a + b == target){ + result.add(a); + result.add(b); + log.info(a + "," + b); + } + } + } + return result; + } +} diff --git a/big-o/src/main/java/com/josdem/algorithms/SquareTimeRunner.java b/big-o/src/main/java/com/josdem/algorithms/SquareTimeRunner.java index 0c78054..4c929ee 100644 --- a/big-o/src/main/java/com/josdem/algorithms/SquareTimeRunner.java +++ b/big-o/src/main/java/com/josdem/algorithms/SquareTimeRunner.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.logging.Logger; /* Type: Square Time Algorithms – O(n^2) Description: Square increment amount of time based on collection size @@ -9,6 +10,8 @@ public class SquareTimeRunner { + private final Logger log = Logger.getLogger(this.getClass().getName()); + public List getTargetNumbers(List numbers, int target) { List result = new ArrayList<>(); numbers.forEach(a -> { @@ -16,6 +19,7 @@ public List getTargetNumbers(List numbers, int target) { if (a + b == target) { result.add(a); result.add(b); + log.info(a + "," + b); } }); }); diff --git a/big-o/src/test/java/com/josdem/algorithms/HalfSquareRunnerTest.java b/big-o/src/test/java/com/josdem/algorithms/HalfSquareRunnerTest.java new file mode 100644 index 0000000..80e97ea --- /dev/null +++ b/big-o/src/test/java/com/josdem/algorithms/HalfSquareRunnerTest.java @@ -0,0 +1,22 @@ +package com.josdem.algorithms; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class HalfSquareRunnerTest { + + private final HalfSquareRunner halfSquareRunner = new HalfSquareRunner(); + + @Test + @DisplayName("show half-square algorithm") + void shouldTestHalfSquare(){ + List numbers = List.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); + List expectedNumbers = List.of(0, 5, 1, 4, 2, 3); + int target = 5; + assertEquals(expectedNumbers, halfSquareRunner.getTargetNumbers(numbers, target), "should get numbers from the array"); + } +}