Min Max Tournament Method

2 min read
sorting
linear search
pair search
tournament search
class Solution{
public: // using sorting
int findSum(int A[], int N){
sort(A,A+N);
return A[N-1] + A[0];
}
};
class Solution{
public: // using linear serching
int findSum(int A[], int N){
int max = A[0];
int min = A[0];
for(int i=0; i<N ; i++){
if(max<A[i]) max = A[i];
if(min>A[i]) min = A[i];
}
return max + min;
}
};
class Solution{
public: //comp pair.
int findSum(int A[], int N){
int i = 0;
struct Pair{int min;int max; };
struct Pair minmax;
if(N%2 == 0){
minmax.max = max(A[0],A[1]);
minmax.min = min(A[0],A[1]);
i=2;
}else{
minmax.max = A[0];
minmax.min = A[0];
i = 1;
}
for(int j=i; j<N ; j = j+2){
if (A[j] < A[j+1]){
minmax.max = max(minmax.max ,A[j+1]);
minmax.min = min(minmax.min ,A[j]);
}
else{
minmax.max = max(minmax.max ,A[j]);
minmax.min = min(minmax.min ,A[j+1]);
}
}
return minmax.min + minmax.max;
}
};
using namespace std;
struct Pair {int min;int max;};
struct Pair getMinMax(int arr[], int low,int high){
struct Pair minmax, mml, mmr; int mid;
if (low == high){
minmax.max = arr[low];
minmax.min = arr[low];
return minmax;
}
if (high == low + 1){
if (arr[low] > arr[high]) {
minmax.max = arr[low];
minmax.min = arr[high];
}else{
minmax.max = arr[high];
minmax.min = arr[low];
}
return minmax;
}
mid = (low + high) / 2;
mml = getMinMax(arr, low, mid);
mmr = getMinMax(arr, mid + 1, high);
if (mml.min < mmr.min) minmax.min = mml.min;
else minmax.min = mmr.min;
if (mml.max > mmr.max)minmax.max = mml.max;
else minmax.max = mmr.max;
return minmax;
}
int main(){
int arr[] = { 1000, 11, 445,1, 330, 3000 };
int arr_size = 6;
struct Pair minmax = getMinMax(arr, 0, arr_size - 1);
cout << "Minimum element is " << minmax.min << endl;
cout << "Maximum element is " << minmax.max;
return 0;
}
0
Subscribe to my newsletter
Read articles from karan arora directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
