Mi sono implementato l'algoritmo del mergesort. L'algoritmo dei minimi e massimi simultanei dovrebbe fare questo:
1. SE LA DIMENSIONE DEL VETTORE NON SUPERA 2,ALLORA CALCOLA DIRETTAMENTE, MEDIANTE UNUNICO CONFRONTO, IL MINIMO E IL MASSIMO

2. ALTRIMENTI, DIVIDI IL VETTORE IN DUESOTTOVETTORI DELLA STESSA DIMENSIONE,CALCOLA RICORSIVAMENTE IL MINIMO MIN1E ILMASSIMO MAX1DEL PRIMO SOTTOVETTORE PRIMO SOTTOVETTORE E ILMINIMO MIN2E MAX2DEL SECONDO SECONDOSOTTOVETTORE SOTTOVETTORE

3. DETERMINA IL MINIMO E IL MASSIMO DEL VETTORE VETTORECOMPLESSIVO CONFRONTANDO MIN1 CON MIN2 E COMPLESSIVO CONFRONTANDO MIN1 CON MIN2 EMAX1 CON MAX2 MAX1 CON MAX2

come potrei modificare il codice sottostante per avere un algoritmo per il i min e massimi simultanei?

codice:
/**
Metodo MergeSort
*/




#include <string>
#define MAX 10
using namespace std;
typedef int start;
typedef int end;
typedef int Item;




/*
* Ricomponi i risultati ottenuti al passo precedente ed ottieni la soluzione complessiva
* (impera)
*/




void impera(Item a[], start left, int center, end right) {
	Item* aux = new int[right + 1];
	int i,j;
	for (i = center+1; i > left; i--)
		aux[i-1] = a[i-1];
		
	for (j = center; j < right; j++) 
		aux[right+center-j] = a[j+1];
		
	for (int k = left; k <= right; k++)
		if (aux[j] < aux[i]) 
			a[k] = aux[j--];
		else
			a[k] = aux[i++];
        delete [] aux;
}




/*
* Dividi il vettore in due sottovettori di dimensione inferiore all'originale ed
* esegui l'algoritmo ricorsivamente sui due sottovettori (divide)
*/


void divide(Item a[], start inizio,end fine) {
    
	if (inizio<fine) {
		int media = (inizio+fine)/2;
		divide(a, inizio, media);
		divide(a, media+1, fine);
		impera(a, inizio, media, fine);
        }
        
}