Skip to content

Add FindMaxRecursionTest #4431

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Oct 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
01cd0ef
Update FindMaxRecursion.java
lukasb1b Sep 29, 2023
a366443
Create FindMaxRecusionTest.java
lukasb1b Sep 29, 2023
a0b50d4
Merge pull request #5 from lukasb1b/Recusiontest
lukasb1b Sep 29, 2023
81746e0
Update and rename FindMaxRecusionTest.java to FindMaxRecursionTest.java
lukasb1b Sep 29, 2023
cef40bc
Update FindMaxRecursion.java
lukasb1b Sep 29, 2023
9f97669
Update FindMaxRecursion.java
lukasb1b Sep 29, 2023
f0da731
Update src/test/java/com/thealgorithms/maths/FindMaxRecursionTest.java
lukasb1b Sep 30, 2023
bb6ca7f
Update src/test/java/com/thealgorithms/maths/FindMaxRecursionTest.java
lukasb1b Sep 30, 2023
cbd4b74
Update src/main/java/com/thealgorithms/maths/FindMaxRecursion.java
lukasb1b Sep 30, 2023
6068448
Update FindMaxRecursion.java
lukasb1b Sep 30, 2023
a65ebba
Update FindMaxRecursionTest.java
lukasb1b Sep 30, 2023
76ddde0
Update FindMaxRecursionTest.java
lukasb1b Sep 30, 2023
9ed5302
Update FindMaxRecursion.java
lukasb1b Sep 30, 2023
08259ba
Update src/main/java/com/thealgorithms/maths/FindMaxRecursion.java
lukasb1b Sep 30, 2023
6dc7160
Update FindMaxRecursion.java
lukasb1b Sep 30, 2023
107ae99
Update FindMaxRecursion.java
lukasb1b Sep 30, 2023
73f1807
Update FindMaxRecursion.java
lukasb1b Sep 30, 2023
5d0b89b
Update FindMaxRecursion.java
lukasb1b Sep 30, 2023
9b2baab
Update FindMaxRecursion.java
lukasb1b Sep 30, 2023
6fe8a0f
Update src/main/java/com/thealgorithms/maths/FindMaxRecursion.java
lukasb1b Oct 1, 2023
2713bb5
Merge branch 'TheAlgorithms:master' into FindMaxRecusionTest
lukasb1b Oct 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 8 additions & 22 deletions src/main/java/com/thealgorithms/maths/FindMaxRecursion.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,9 @@
package com.thealgorithms.maths;

import java.util.Arrays;
import java.util.Random;
public final class FindMaxRecursion {

public class FindMaxRecursion {

public static void main(String[] args) {
Random rand = new Random();

/* rand size */
int size = rand.nextInt(100) + 1;
int[] array = new int[size];

/* init array with rand numbers */
for (int i = 0; i < size; i++) {
array[i] = rand.nextInt() % 100;
}

assert max(array) == Arrays.stream(array).max().getAsInt();
assert max(array, 0, array.length - 1) == Arrays.stream(array).max().getAsInt();
private FindMaxRecursion() {
}

/**
* Get max of array using divide and conquer algorithm
*
Expand All @@ -29,7 +12,10 @@ public static void main(String[] args) {
* @param high the index of the last element
* @return max of {@code array}
*/
public static int max(int[] array, int low, int high) {
public static int max(final int[] array, final int low, final int high) {
if (array.length == 0) {
throw new IllegalArgumentException("array must be non-empty.");
}
if (low == high) {
return array[low]; // or array[high]
}
Expand All @@ -48,7 +34,7 @@ public static int max(int[] array, int low, int high) {
* @param array contains elements
* @return max value of {@code array}
*/
public static int max(int[] array) {
return array.length == 1 ? array[0] : max(array, 0, array.length);
public static int max(final int[] array) {
return max(array, 0, array.length - 1);
}
}
28 changes: 28 additions & 0 deletions src/test/java/com/thealgorithms/maths/FindMaxRecursionTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.thealgorithms.maths;

import static org.junit.jupiter.api.Assertions.assertThrows;

import java.util.stream.Stream;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

public class FindMaxRecursionTest {

@ParameterizedTest
@MethodSource("inputStream")
void numberTests(int expected, int[] input) {
Assertions.assertEquals(expected, FindMaxRecursion.max(input));
}

private static Stream<Arguments> inputStream() {
return Stream.of(Arguments.of(5, new int[] {5, 5, 5, 5, 5}), Arguments.of(0, new int[] {-1, 0}), Arguments.of(-1, new int[] {-10, -9, -8, -7, -6, -5, -4, -3, -2, -1}), Arguments.of(9, new int[] {3, -2, 3, 9, -4, -4, 8}), Arguments.of(3, new int[] {3}));
}

@Test
public void testFindMaxThrowsExceptionForEmptyInput() {
assertThrows(IllegalArgumentException.class, () -> FindMaxRecursion.max(new int[] {}));
}
}