#include "stdafx.h"
#include "conio.h"
#include "stdlib.h"
#define maxNums 1024
void sort( int nums[] , int n , int max2min[] , int min2max[] )
{
int i , j , t;
int nmax , pmax;
int nmin , pmin;
for( i = 0 ; i < n ; i++ )
{
max2min[i] = nums[i];
min2max[i] = nums[i];
}
for( i = 0 ; i < n - 1 ; i++ )
{
nmax = max2min[i];
pmax = i;
nmin = min2max[i];
pmin = i;
for( j = i + 1 ; j < n ; j++ )
{
if( nmax < max2min[j] )
{
nmax = max2min[j];
pmax = j;
}
if( nmin > min2max[j] )
{
nmin = min2max[j];
pmin = j;
}
}
t = max2min[i];
max2min[i] = max2min[pmax];
max2min[pmax] = t;
t = min2max[i];
min2max[i] = min2max[pmin];
min2max[pmin] = t;
}
}
int max_min( int nums[] , int n )
{
int nmax[maxNums];
int nmin[maxNums];
sort( nums , n , nmax , nmin );
printf( "decrease order:\t" );
for( int i = 0 ; i < n ; i++ )
printf( "%3d" , nmax[i] );
printf( "\n" );
printf( "increase order:\t" );
for( int i = 0 ; i < n ; i++ )
printf( "%3d" , nmin[i] );
printf( "\n" );
for( int i = n - 1 ; i > 0 ; i-- )
{
nmax[i-1] = nmax[i-1] * nmax[i] + 1;
int j = i - 1;
while( j > 0 && nmax[j] > nmax[j-1] )
{
int t = nmax[j];
nmax[j] = nmax[j-1];
nmax[j-1] = t;
}
}
for( int i = n - 1 ; i > 0 ; i-- )
{
nmin[i-1] = nmin[i-1] * nmin[i] + 1;
int j = i - 1;
while( j > 0 && nmin[j] > nmin[j-1] )
{
int t = nmin[j];
nmin[j] = nmin[j-1];
nmin[j-1] = t;
}
}
printf( "max=%d\n" , nmax[0] );
printf( "min=%d\n" , nmin[0] );
return nmax[0]-nmin[0];
}
int _tmain(int argc, _TCHAR* argv[])
{
int nums[] = { 1 , 5 , 3 , 7 };
int n = 4;
printf( "max-min=%d\n" , max_min( nums , n ) );
getch();
return 0;
}