## How to find the minimum and maximum element of an Array in C++? # How to find the minimum and maximum element of an Array in C++?

In this article, you’ll be learning how you can find the minimum and maximum element of an Array using STL in C++

Given an array arr[], find the minimum and maximum element of this array using STL in C++.
Example:

Input: 1, 11, 2, 4, 19, 22, 34, 56, 71, 23, 2, 0, 53

Output: min = 0, max = 71

## Approach 1: Linear Comparisons

• Consider the first element as the minimum and maximum
• From the second element onwards compare each element with the minimum and maximum.
• If the element is less than the minimum, then make it as the new minimum.
• If the element is greater than the maximum, then make it as the new maximum.
• Number of comparisons in worst case: 2(n-1)
``````

#include<bits/stdc++.h>

using namespace std;

class MinMax
{
public:

// Method to find min and max elements of an array using
// Linear comparing
vector<int> minMaxLinearCompare(vector<int> &arr, int size)
{
// 0th index: minimum
// 1st index: maximum
int max_index    =  1;
int min_index    =  0;
vector<int> minmax;

// input array is empty
if(size == 0) return minmax;

minmax.push_back(arr);
minmax.push_back(arr);

// comparing each element with min and max
for(int i=1; i<size; i++)
{
if(arr[i] > minmax[max_index])
minmax[max_index] = arr[i];
else if(arr[i] < minmax[min_index])
minmax[min_index] = arr[i];

}
return minmax;

}

};

int main()
{
//creating the ReverseAray object
MinMax mnmx;
vector<int> arr = {1,11,2,4,19,22,34,56,71,23,2,0,53};
int arr_size = arr.size();
vector<int> mnmax;
mnmax = mnmx.minMaxLinearCompare(arr, arr_size);
if(mnmax.size() > 0)
{
cout<<"min "<<mnmax<<" max "<<mnmax<<endl;
}
return 0;
}

``````

## Approach 2: Pair-wise Comparisons

• If the size of array is odd, then assign first element as minimum and maximum
• If the size of array is even, then compare the first two elements, make the larger element as maximum and smaller element as minimum.
• From the third element onwards consider two elements at a time and compare them, then compare the lager element with maximum and smaller one with the minimum.
• Number of comparisons in worst case: 3/2(n-1) + 1
``````
#include<bits/stdc++.h>

using namespace std;

class MinMax
{
public:

// Method to find min and max elements of an array using
// comparison in pairs
vector<int> minMaxPairCompare(vector<int> &arr, int size)
{
// 0th index: minimum
// 1st index: maximum
int max_index    =  1;
int min_index    =  0;
int begin_index  = -1;
vector<int> minmax;

// input array is empty
if(size == 0) return minmax;

// input array contains only one element
if(size == 1)
{
minmax.push_back(arr);
minmax.push_back(arr);
return minmax;
}

// no. of elements is even
if(size%2 == 0)
{
minmax.push_back(min(arr,arr));
minmax.push_back(max(arr,arr));
begin_index = 2;
}
else
{
minmax.push_back(arr);
begin_index = 1;
}

// looping through the array considering 2 elements at once
for(int i=begin_index;i<size;i+=2)
{
// comparing max element with maximum b/w ith and (i+1)th element
if(max(arr[i],arr[i+1]) > minmax[max_index])
minmax[max_index] = max(arr[i],arr[i+1]);

// comparing min element with minimum b/w ith and (i+1)th element
if(min(arr[i],arr[i+1]) < minmax[min_index])
minmax[min_index] = min(arr[i],arr[i+1]);
}

return minmax;
}
};

int main()
{
//creating the ReverseAray object
MinMax mnmx;
vector<int> arr = {1,11,2,4,19,22,34,56,71,23,2,0,53};
int arr_size = arr.size();
vector<int> mnmax;
mnmax = mnmx.minMaxPairCompare(arr, arr_size);
if(mnmax.size() > 0)
{
cout<<"min "<<mnmax<<" max "<<mnmax<<endl;
}

return 0;
} ``````

Latest Posts

##### 20 Must-have Free plugins for WordPress
Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
• Image
• SKU
• Rating
• Price
• Stock
• Availability