//
main.cpp
// Find minimum & maximum in one array at one time
#include < iostream >
#include < utility >
using namespace std ;
void PairFind( int arr[], size_t len, size_t begin, int & mi, int & ma)
{
for ( int i = begin ;i + 1 < len ;i += 2 )
{
if (arr[i] < arr[i + 1 ])
{
mi = (arr[i] < mi ? arr[i] : mi) ;
ma = (arr[i + 1 ] > ma ? arr[i + 1 ] : ma) ;
}
else // arr[i] >= arr[i+1]
{
mi = (arr[i + 1 ] < mi ? arr[i + 1 ] : mi) ;
ma = (arr[i] > ma ? arr[i] : ma) ;
} // if
} // for
}
pair < int , int > MinMax( int arr[], size_t len)
{
int minimum = 0 ;
int maximum = 0 ;
// It is better to split the odd case & even case. Good idea !
if ( 1 == len % 2 ) // Odd
{
minimum = maximum = arr[ 0 ] ;
PairFind(arr, len, 1 , minimum, maximum) ;
}
else // Even number
{
minimum = arr[ 0 ] ;
maximum = arr[ 1 ] ;
PairFind(arr, len, 2 , minimum, maximum) ;
} // if
return pair < int , int > (minimum, maximum) ;
}
int arr_even[] = { 2 , 4 , 9 , 6 , 7 , 1 , 0 , 3 , 8 , 5 } ;
int arr_odd[] = { 2 , 4 , 9 , 6 , 7 , 1 , 0 , 3 , 8 , 5 , 7 } ;
int main()
{
pair < int , int > miMa_even = MinMax(arr_even, sizeof (arr_even) / sizeof (arr_even[ 0 ])) ;\
cout << " minimum is : " << miMa_even.first << endl ;
cout << " maximum is : " << miMa_even.second << endl ;
cout << endl ;
pair < int , int > miMa_odd = MinMax(arr_odd, sizeof (arr_odd) / sizeof (arr_odd[ 0 ])) ;
cout << " minimum is : " << miMa_odd.first << endl ;
cout << " maximum is : " << miMa_odd.second << endl ;
return 0 ;
}
// Find minimum & maximum in one array at one time
#include < iostream >
#include < utility >
using namespace std ;
void PairFind( int arr[], size_t len, size_t begin, int & mi, int & ma)
{
for ( int i = begin ;i + 1 < len ;i += 2 )
{
if (arr[i] < arr[i + 1 ])
{
mi = (arr[i] < mi ? arr[i] : mi) ;
ma = (arr[i + 1 ] > ma ? arr[i + 1 ] : ma) ;
}
else // arr[i] >= arr[i+1]
{
mi = (arr[i + 1 ] < mi ? arr[i + 1 ] : mi) ;
ma = (arr[i] > ma ? arr[i] : ma) ;
} // if
} // for
}
pair < int , int > MinMax( int arr[], size_t len)
{
int minimum = 0 ;
int maximum = 0 ;
// It is better to split the odd case & even case. Good idea !
if ( 1 == len % 2 ) // Odd
{
minimum = maximum = arr[ 0 ] ;
PairFind(arr, len, 1 , minimum, maximum) ;
}
else // Even number
{
minimum = arr[ 0 ] ;
maximum = arr[ 1 ] ;
PairFind(arr, len, 2 , minimum, maximum) ;
} // if
return pair < int , int > (minimum, maximum) ;
}
int arr_even[] = { 2 , 4 , 9 , 6 , 7 , 1 , 0 , 3 , 8 , 5 } ;
int arr_odd[] = { 2 , 4 , 9 , 6 , 7 , 1 , 0 , 3 , 8 , 5 , 7 } ;
int main()
{
pair < int , int > miMa_even = MinMax(arr_even, sizeof (arr_even) / sizeof (arr_even[ 0 ])) ;\
cout << " minimum is : " << miMa_even.first << endl ;
cout << " maximum is : " << miMa_even.second << endl ;
cout << endl ;
pair < int , int > miMa_odd = MinMax(arr_odd, sizeof (arr_odd) / sizeof (arr_odd[ 0 ])) ;
cout << " minimum is : " << miMa_odd.first << endl ;
cout << " maximum is : " << miMa_odd.second << endl ;
return 0 ;
}