Będę wdzięczny za poprawę algorytmu, bo rekurencja nie jest moją mocną stroną.
Kod: Zaznacz cały
#include<iostream>
using namespace std;
int e[10];
struct para
{
int min,max;
};
para wynik, lewy, prawy;
para min_max(int i, int j)
{
if(i+1==j)
{
if(e[j]>e[i])
{
wynik.max = j;
wynik.min = i;
}
else
{
wynik.max = i;
wynik.min = j;
}
}
else
{
int x = (i+j-1)/2;
lewy = min_max(i,x);
prawy = min_max(x+1,j);
if(e[prawy.min]<e[lewy.min])
wynik.min = prawy.min;
else
wynik.min = lewy.min;
if(e[lewy.max]<e[prawy.max])
wynik.max = prawy.max;
else
wynik.max = lewy.max;
}
return wynik;
}
int main()
{
int n = 10;
for(int i=0;i<n;i++)
{
cin>>e[i];
}
para mm = min_max(0,9);
cout<<"Minimum = " << e[mm.min] << ", maksimum = " << e[mm.max] << endl;
}