hola..
mira.. el siguiente codigo esta escrito en c++, ejecutas el programa, le indicas la cantidad de numeros a ordenar, le indicas los numeros y el resultado seran ellos. ordenados..
sugerencia: podeis modificarle la fuente de datos (el arraglo), para que los numeros a ordenar sean los que le suministres por la linea de comandos..,
es decir: abrir una terminar y teclear: "ordenar 1 ,5 ,3 , 6.", para lo cual el resultado seria: 1,3,5,6, donde ordenar seria el nombre del programa..
/* aqui comizenza el codigo del programa */
#include <stdio.h>
void ordenar (int arreglo[], int inf, int sup);
int main(int argc, char* argv[])
{
// en este punto podeis cambiar la fuente de los datos
// es decir, podeis cojer argc-1 como la cantidad de numeros a ordenar
// y agrv como el arreglo donde estan los datos (string,!! se deben convertir)
int cantDatos,k, numeros[TAM]; // TAM define la cantidad de datos
scanf ("%d",&cantDatos);
for (k=0; k<cantDatos; k++) scanf ("%d",&numeros[k]);
ordenar (numeros,0,cantDatos-1);
for (k=0; k<cantDatos; k++) printf ("%d ",numeros[k]);
printf ("\n");
return 0;
}
void ordenar (int arreglo[], int inf, int sup)
{
int elem_div = arreglo[sup];
int temp ;
int i = inf - 1, j = sup;
int cont = 1;
if (inf >= sup) /* Se cruzaron los ¡ndices ? */
return;
while (cont)
{
while (arreglo[++i] < elem_div);
while (arreglo[--j] > elem_div);
/* Se cumple la condicion ? */
if (i < j)
{
temp = arreglo[i];
arreglo[i] = arreglo[j];
arreglo[j] = temp;
}
else
cont = 0;
}
/* Dejamos el elemento de division en su posicion final */
temp = arreglo[i];
arreglo[i] = arreglo[sup];
arreglo[sup] = temp;
/* Aplicamos recursivamente a los subarreglos generados */
ordenar (arreglo, inf, i - 1);
ordenar (arreglo, i + 1, sup);
}