Hola:
Prueba con esto a ver:
Código C++:
Ver originalvoid ordenar( int arr[] , int n )
{
int i = 0;
int j = n - 1;
bool buscando_max = true;
while ( i < j )
{
int pos_max_o_min = -1 ;
int max_o_min = arr[buscando_max ? 0 : n-1];
for ( int pos = i ; pos <= j ; ++pos )
{
if ( (arr[pos] >= max_o_min && buscando_max)
|| (arr[pos] <= max_o_min && !buscando_max) )
{
max_o_min = arr[pos];
pos_max_o_min = pos;
}
}
if ( pos_max_o_min != -1 )
{
int x = buscando_max ? j : i;
int temp = arr[pos_max_o_min];
arr[pos_max_o_min] = arr[x];
arr[x] = temp;
}
if ( buscando_max )
j--;
else
i++;
buscando_max = !buscando_max;
}
}
slds;
Nup_