From 6079b4bc108e0cd21ce0fef3c4a26d73b1a50620 Mon Sep 17 00:00:00 2001 From: shellhub Date: Mon, 10 Aug 2020 16:52:06 +0800 Subject: [PATCH] * reduce code * add function overriding * update test --- Maths/FindMax.java | 2 +- Maths/FindMaxRecursion.java | 16 ++++++++++++++-- Maths/FindMin.java | 2 +- Maths/FindMinRecursion.java | 18 +++++++++++++++--- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/Maths/FindMax.java b/Maths/FindMax.java index 739cda39b..f98ec5d06 100644 --- a/Maths/FindMax.java +++ b/Maths/FindMax.java @@ -5,7 +5,7 @@ public class FindMax { //Driver public static void main(String[] args) { int[] array = {2, 4, 9, 7, 19, 94, 5}; - System.out.println("max = " + findMax(array)); + assert findMax(array) == 94; } /** diff --git a/Maths/FindMaxRecursion.java b/Maths/FindMaxRecursion.java index 3ebcaf392..6d0616269 100644 --- a/Maths/FindMaxRecursion.java +++ b/Maths/FindMaxRecursion.java @@ -6,7 +6,8 @@ public class FindMaxRecursion { int low = 0; int high = array.length - 1; - System.out.println("max value is " + max(array, low, high)); + assert max(array, low, high) == 94; + assert max(array, array.length) == 94; } /** @@ -27,6 +28,17 @@ public class FindMaxRecursion { int leftMax = max(array, low, mid); //get max in [low, mid] int rightMax = max(array, mid + 1, high); //get max in [mid+1, high] - return leftMax >= rightMax ? leftMax : rightMax; + return Math.max(leftMax, rightMax); + } + + /** + * Get max of array using recursion algorithm + * + * @param array contains elements + * @param len length of given array + * @return max value of {@code array} + */ + public static int max(int[] array, int len) { + return len == 1 ? array[0] : Math.max(max(array, len - 1), array[len - 1]); } } diff --git a/Maths/FindMin.java b/Maths/FindMin.java index 90b7ea109..a52b3ff20 100644 --- a/Maths/FindMin.java +++ b/Maths/FindMin.java @@ -5,7 +5,7 @@ public class FindMin { //Driver public static void main(String[] args) { int[] array = {2, 4, 9, 7, 19, 94, 5}; - System.out.println("min = " + findMin(array)); + assert findMin(array) == 2; } /** diff --git a/Maths/FindMinRecursion.java b/Maths/FindMinRecursion.java index 292ffc30e..c1b5f2856 100644 --- a/Maths/FindMinRecursion.java +++ b/Maths/FindMinRecursion.java @@ -2,11 +2,12 @@ package Maths; public class FindMinRecursion { public static void main(String[] args) { - int[] array = {2, 4, 9, 7, 19, 94, 5}; + int[] array = {2, 4, 9, -7, 19, 94, 5}; int low = 0; int high = array.length - 1; - System.out.println("min value is " + min(array, low, high)); + assert min(array, low, high) == -7; + assert min(array, array.length) == -7; } /** @@ -27,6 +28,17 @@ public class FindMinRecursion { int leftMin = min(array, low, mid); //get min in [low, mid] int rightMin = min(array, mid + 1, high); //get min in [mid+1, high] - return leftMin <= rightMin ? leftMin : rightMin; + return Math.min(leftMin, rightMin); + } + + /** + * Get min of array using recursion algorithm + * + * @param array contains elements + * @param len length of given array + * @return min value of {@code array} + */ + public static int min(int[] array, int len) { + return len == 1 ? array[0] : Math.min(min(array, len - 1), array[len - 1]); } }