Brute Force Approach Using Single Loop: Increment by 1
This approach iterates through the array once and keeps track of the minimum and maximum values. It is a simple and effective solution for finding min and max in an array. Works well for small to medium datasets, but for large datasets, an optimized approach may be preferred.
C++
#include <iostream>
using namespace std;
void findMinMax(int arr[], int size) {
int minVal = arr[0], maxVal = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < minVal) minVal = arr[i];
if (arr[i] > maxVal) maxVal = arr[i];
}
cout << "Min: " << minVal << " Max: " << maxVal << endl;
}
int main() {
int arr[] = {3, 5, 1, 9, 2};
int size = sizeof(arr) / sizeof(arr[0]);
findMinMax(arr, size);
return 0;
}

You can also try this code with Online C++ Compiler
Run Code
Java
public class MinMaxBruteForce {
public static void findMinMax(int[] arr) {
int minVal = arr[0], maxVal = arr[0];
for (int num : arr) {
if (num < minVal) minVal = num;
if (num > maxVal) maxVal = num;
}
System.out.println("Min: " + minVal + " Max: " + maxVal);
}
public static void main(String[] args) {
int[] arr = {3, 5, 1, 9, 2};
findMinMax(arr);
}
}

You can also try this code with Online Java Compiler
Run Code
Python
def find_min_max(arr):
min_val, max_val = arr[0], arr[0]
for num in arr:
if num < min_val:
min_val = num
if num > max_val:
max_val = num
print("Min:", min_val, "Max:", max_val)
arr = [3, 5, 1, 9, 2]
find_min_max(arr)

You can also try this code with Online Python Compiler
Run Code
JS
function findMinMax(arr) {
let minVal = arr[0], maxVal = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < minVal) minVal = arr[i];
if (arr[i] > maxVal) maxVal = arr[i];
}
console.log(`Min: ${minVal} Max: ${maxVal}`);
}
// Example usage
const arr = [3, 5, 1, 9, 2];
findMinMax(arr);

You can also try this code with Online Javascript Compiler
Run Code
PHP
function findMinMax($arr) {
$minVal = $arr[0];
$maxVal = $arr[0];
foreach ($arr as $num) {
if ($num < $minVal) $minVal = $num;
if ($num > $maxVal) $maxVal = $num;
}
echo "Min: " . $minVal . " Max: " . $maxVal;
}
$arr = [3, 5, 1, 9, 2];
findMinMax($arr);

You can also try this code with Online PHP Compiler
Run Code
- Time complexity- O(n)
- Space Complexity- O(1)
Efficient Approach Using Single Loop: Increment by 2
This efficient approach reduces the number of comparisons by processing two elements at a time. This method is faster than the single-loop brute-force approach as it performs fewer comparisons.
C++
#include <iostream>
using namespace std;
void findMinMax(int arr[], int size) {
int minVal, maxVal, i;
if (size % 2 == 0) {
minVal = min(arr[0], arr[1]);
maxVal = max(arr[0], arr[1]);
i = 2;
} else {
minVal = maxVal = arr[0];
i = 1;
}
while (i < size - 1) {
if (arr[i] < arr[i + 1]) {
minVal = min(minVal, arr[i]);
maxVal = max(maxVal, arr[i + 1]);
} else {
minVal = min(minVal, arr[i + 1]);
maxVal = max(maxVal, arr[i]);
}
i += 2;
}
cout << "Min: " << minVal << " Max: " << maxVal << endl;
}
int main() {
int arr[] = {3, 5, 1, 9, 2};
int size = sizeof(arr) / sizeof(arr[0]);
findMinMax(arr, size);
return 0;
}

You can also try this code with Online C++ Compiler
Run Code
Java
def find_min_max(arr):
if len(arr) % 2 == 0:
min_val, max_val = min(arr[0], arr[1]), max(arr[0], arr[1])
i = 2
else:
min_val = max_val = arr[0]
i = 1
while i < len(arr) - 1:
if arr[i] < arr[i + 1]:
min_val = min(min_val, arr[i])
max_val = max(max_val, arr[i + 1])
else:
min_val = min(min_val, arr[i + 1])
max_val = max(max_val, arr[i])
i += 2
print("Min:", min_val, "Max:", max_val)
arr = [3, 5, 1, 9, 2]
find_min_max(arr)

You can also try this code with Online Java Compiler
Run Code
Python
public class MinMaxEfficient {
public static void findMinMax(int[] arr) {
int minVal, maxVal, i;
if (arr.length % 2 == 0) {
minVal = Math.min(arr[0], arr[1]);
maxVal = Math.max(arr[0], arr[1]);
i = 2;
} else {
minVal = maxVal = arr[0];
i = 1;
}
while (i < arr.length - 1) {
if (arr[i] < arr[i + 1]) {
minVal = Math.min(minVal, arr[i]);
maxVal = Math.max(maxVal, arr[i + 1]);
} else {
minVal = Math.min(minVal, arr[i + 1]);
maxVal = Math.max(maxVal, arr[i]);
}
i += 2;
}
System.out.println("Min: " + minVal + " Max: " + maxVal);
}
public static void main(String[] args) {
int[] arr = {3, 5, 1, 9, 2};
findMinMax(arr);
}
}

You can also try this code with Online Python Compiler
Run Code
JS
function findMinMax(arr) {
let minVal, maxVal, i;
if (arr.length % 2 === 0) {
minVal = Math.min(arr[0], arr[1]);
maxVal = Math.max(arr[0], arr[1]);
i = 2;
} else {
minVal = maxVal = arr[0];
i = 1;
}
while (i < arr.length - 1) {
if (arr[i] < arr[i + 1]) {
minVal = Math.min(minVal, arr[i]);
maxVal = Math.max(maxVal, arr[i + 1]);
} else {
minVal = Math.min(minVal, arr[i + 1]);
maxVal = Math.max(maxVal, arr[i]);
}
i += 2;
}
console.log(`Min: ${minVal} Max: ${maxVal}`);
}
// Example usage
const arr = [3, 5, 1, 9, 2];
findMinMax(arr);

You can also try this code with Online Javascript Compiler
Run Code
PHP
function findMinMax($arr) {
$size = count($arr);
if ($size % 2 == 0) {
$minVal = min($arr[0], $arr[1]);
$maxVal = max($arr[0], $arr[1]);
$i = 2;
} else {
$minVal = $maxVal = $arr[0];
$i = 1;
}
while ($i < $size - 1) {
if ($arr[$i] < $arr[$i + 1]) {
$minVal = min($minVal, $arr[$i]);
$maxVal = max($maxVal, $arr[$i + 1]);
} else {
$minVal = min($minVal, $arr[$i + 1]);
$maxVal = max($maxVal, $arr[$i]);
}
$i += 2;
}
echo "Min: " . $minVal . " Max: " . $maxVal;
}
$arr = [3, 5, 1, 9, 2];
findMinMax($arr);

You can also try this code with Online PHP Compiler
Run Code
Time Complexity: O(n) (since we still go through the array once).
Space Complexity: O(1) (since only a few extra variables are used).
Frequently Asked Questions
Which approach is the most efficient?
The efficient approach using a single loop with an increment of 2 reduces the number of comparisons, making it the best choice for large datasets.
When should we use the recursive method?
The recursive approach is useful when solving problems using divide and conquer but might not be optimal for large arrays due to stack memory limitations.
Can we use sorting to find min and max?
Yes, sorting the array allows us to get min and max from the first and last elements, but sorting is expensive (O(n log n)) compared to direct approaches (O(n)).
Conclusion
In this article, we discussed different ways to find the minimum and maximum elements in an array using recursion, built-in functions, brute force, and optimized approaches. Each method has its advantages, depending on the problem requirements and constraints.