Find Maximum and Minimum in Array using Loop
Problem and examples
Given an array of integers, your task is to find the maximum and minimum values present in the array using a simple loop (without any built-in functions).
- The maximum value is the largest number in the array.
- The minimum value is the smallest number in the array.
If the array is empty, there is no maximum or minimum, and the result should indicate that appropriately (e.g., null or a message).
| Input Array | Maximum | Minimum | Description |
|---|---|---|---|
| [10, 20, 5, 8, 30] | 30 | 5 | Normal case with unordered elements Visualization |
| [5, 5, 5, 5] | 5 | 5 | All elements are equalVisualization |
| [-10, -5, -3, -20] | -3 | -20 | All elements are negativeVisualization |
| [100] | 100 | 100 | Only one element in the arrayVisualization |
| [] | null | null | Empty array — no max or min can be determinedVisualization |
Explore Find Maximum and Minimum in Array using Loop
Load an example or enter your own input. Use the player controls to follow each change.
Understanding the Problem
We are given an array of numbers and asked to find the maximum and minimum values. This is a basic but important problem that teaches us how to scan through data and compare values step-by-step. Let's walk through how we can solve it efficiently, using a beginner-friendly approach.
Step-by-Step Approach
Step 1: Start With the First Element
We begin by assuming the first element of the array is both the maximum and minimum. This gives us a starting point for comparison.
Step 2: Loop Through the Array
Go through each element in the array one by one:
- If the current element is greater than the current
maximum, update themaximum. - If the current element is less than the current
minimum, update theminimum.
This way, you’ll always keep track of the biggest and smallest values you’ve seen so far.
Example: [4, 2, 9, 1, 6]
Let’s walk through the example step-by-step:
- Start with
max = 4andmin = 4. - Compare 2 → smaller than min → update
min = 2 - Compare 9 → greater than max → update
max = 9 - Compare 1 → smaller than min → update
min = 1 - Compare 6 → no change
Final result: max = 9, min = 1
Handling Edge Cases
Case 1: Single Element Array
If the array has only one element, say [5], then that value is both the maximum and minimum by default. There’s nothing else to compare it to.
Case 2: All Elements Are Equal
For example, in [7, 7, 7], every number is the same. So both max and min are 7. No updates will happen during the comparisons.
Case 3: Empty Array
If the array is empty, we can’t find the maximum or minimum. There’s no data to work with. In this case, we should:
- Return
nullorundefined - Or display a message like: “No elements to compare”
Always remember to check for an empty array at the beginning to avoid runtime errors.
- Given an array of numbers
arr. - If array is empty, return null or -1.
- Initialize
max_valandmin_valwith the first element of the array. - Iterate through each element in the array starting from the second element.
- If the current element is greater than
max_val, updatemax_val. - If the current element is less than
min_val, updatemin_val. - After the loop, return
max_valandmin_val.
Worked example
Let us take the following array and apply the logic to find the maximum and minimum elements.
Initialize max = 6 and min = 6 with the first element of the array.
Check index 1
Compare 3 at index=1 with current max = 6 and min = 6.
3 is smaller than current min. Update min = 3.
Check index 2
Compare 8 at index=2 with current max = 6 and min = 3.
8 is greater than current max. Update max = 8.
Check index 3
Compare 2 at index=3 with current max = 8 and min = 3.
2 is smaller than current min. Update min = 2.
Check index 4
Compare 7 at index=4 with current max = 8 and min = 2.
No update required.
Check index 5
Compare 4 at index=5 with current max = 8 and min = 2.
No update required.
Final Result:
Maximum = 8, Minimum = 2
Implementation and efficiency
C implementation
#include <stdio.h>
void findMaxMin(int arr[], int n, int *maxVal, int *minVal) {
*maxVal = arr[0];
*minVal = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > *maxVal) *maxVal = arr[i];
if (arr[i] < *minVal) *minVal = arr[i];
}
}
int main() {
int arr[] = {-5, -1, -9, 0, 3, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int maxVal, minVal;
findMaxMin(arr, n, &maxVal, &minVal);
printf("Maximum: %d\n", maxVal);
printf("Minimum: %d\n", minVal);
return 0;
}C++ implementation
#include <iostream>
#include <vector>
using namespace std;
pair<int, int> findMaxMin(const vector<int>& arr) {
int maxVal = arr[0];
int minVal = arr[0];
for (size_t i = 1; i < arr.size(); i++) {
if (arr[i] > maxVal) maxVal = arr[i];
if (arr[i] < minVal) minVal = arr[i];
}
return {maxVal, minVal};
}
int main() {
vector<int> arr = {-5, -1, -9, 0, 3, 7};
auto [maxVal, minVal] = findMaxMin(arr);
cout << "Maximum: " << maxVal << endl;
cout << "Minimum: " << minVal << endl;
return 0;
}Python implementation
def find_max_min(arr):
max_val = arr[0]
min_val = arr[0]
for num in arr[1:]:
if num > max_val:
max_val = num
if num < min_val:
min_val = num
return max_val, min_val
arr = [-5, -1, -9, 0, 3, 7]
max_val, min_val = find_max_min(arr)
print("Maximum:", max_val)
print("Minimum:", min_val)Java implementation
public class FindMaxMin {
public static int[] findMaxMin(int[] arr) {
int maxVal = arr[0];
int minVal = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > maxVal) maxVal = arr[i];
if (arr[i] < minVal) minVal = arr[i];
}
return new int[]{maxVal, minVal};
}
public static void main(String[] args) {
int[] arr = {-5, -1, -9, 0, 3, 7};
int[] result = findMaxMin(arr);
System.out.println("Maximum: " + result[0]);
System.out.println("Minimum: " + result[1]);
}
}JavaScript implementation
function findMaxMin(arr) {
let maxVal = arr[0];
let minVal = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > maxVal) maxVal = arr[i];
if (arr[i] < minVal) minVal = arr[i];
}
return [maxVal, minVal];
}
const arr = [-5, -1, -9, 0, 3, 7];
const [maxVal, minVal] = findMaxMin(arr);
console.log("Maximum:", maxVal);
console.log("Minimum:", minVal);Go implementation
package main
import "fmt"
func findMaxMin(arr []int) (int, int) {
maxVal := arr[0]
minVal := arr[0]
for i := 1; i < len(arr); i++ {
if arr[i] > maxVal {
maxVal = arr[i]
}
if arr[i] < minVal {
minVal = arr[i]
}
}
return maxVal, minVal
}
func main() {
arr := []int{-5, -1, -9, 0, 3, 7}
maxVal, minVal := findMaxMin(arr)
fmt.Println("Maximum:", maxVal)
fmt.Println("Minimum:", minVal)
}Rust implementation
fn find_max_min(arr: &[i32]) -> (i32, i32) {
let mut max_val = arr[0];
let mut min_val = arr[0];
for &num in &arr[1..] {
if num > max_val { max_val = num; }
if num < min_val { min_val = num; }
}
(max_val, min_val)
}
fn main() {
let arr = [-5, -1, -9, 0, 3, 7];
let (max_val, min_val) = find_max_min(&arr);
println!("Maximum: {}", max_val);
println!("Minimum: {}", min_val);
}Kotlin implementation
fun findMaxMin(arr: IntArray): Pair<Int, Int> {
var maxVal = arr[0]
var minVal = arr[0]
for (i in 1 until arr.size) {
if (arr[i] > maxVal) maxVal = arr[i]
if (arr[i] < minVal) minVal = arr[i]
}
return Pair(maxVal, minVal)
}
fun main() {
val arr = intArrayOf(-5, -1, -9, 0, 3, 7)
val (maxVal, minVal) = findMaxMin(arr)
println("Maximum: $maxVal")
println("Minimum: $minVal")
}Swift implementation
func findMaxMin(arr: [Int]) -> (Int, Int) {
var maxVal = arr[0]
var minVal = arr[0]
for i in 1..<arr.count {
if arr[i] > maxVal { maxVal = arr[i] }
if arr[i] < minVal { minVal = arr[i] }
}
return (maxVal, minVal)
}
let arr = [-5, -1, -9, 0, 3, 7]
let (maxVal, minVal) = findMaxMin(arr: arr)
print("Maximum:", maxVal)
print("Minimum:", minVal)TypeScript implementation
function findMaxMin(arr: number[]): [number, number] {
let maxVal = arr[0];
let minVal = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > maxVal) maxVal = arr[i];
if (arr[i] < minVal) minVal = arr[i];
}
return [maxVal, minVal];
}
const arr: number[] = [-5, -1, -9, 0, 3, 7];
const [maxVal, minVal] = findMaxMin(arr);
console.log("Maximum:", maxVal);
console.log("Minimum:", minVal);Time complexity
| Case | Time | Explanation |
|---|---|---|
| best case | O(n) | Even in the best case, every element must be checked to ensure no smaller or larger values exist. |
| average case | O(n) | Each element is visited once to compare and possibly update the maximum or minimum. |
| worst case | O(n) | In the worst case, the loop still traverses the entire array to determine the max and min values. |
Space complexity
O(1)
Only a fixed number of variables (e.g., max_val, min_val) are used, regardless of input size.