Min Max Tournament Method

karan arorakaran arora
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

karan arora
karan arora