Linux - quicksort

 
Vista:

quicksort

Publicado por Laura22 (3 intervenciones) el 13/02/2006 09:45:28
Hola Amigos!!!! tengo un problema con la funcion Quicksort , necesito un programa que me permita introducir por linea de comando una serie de numeros y que dicha funcion quiksort me devuelva el resultado ordenados !!!! Estoy desesperada si alguien es tan amable que me exe un pequeño cable xfavor !!!!! estare muy agradecida !!! mi correo es el siguiente [email protected] . Besos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:quicksort

Publicado por Alberto (4 intervenciones) el 13/02/2006 15:47:13
¿Qué lenguaje estás usando?

Si es JAVA, quizás pueda ayudarte : )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:quicksort

Publicado por Laura22 (3 intervenciones) el 13/02/2006 23:28:45
Pues el lenguaje es en linux en forma de scrip y la idea es la siguiente : yo meto por pantalla ej 1 ,5 ,3 , 6. entonces la la funcion quicksort me devuelva esto 1,3,5,6 ordenado!!!! si alguien tiene alguna idea de como hacerlo xfa decirmelo!!! Un beso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:quicksort

Publicado por Alberto Menendez Romero (4 intervenciones) el 10/06/2006 17:36:23
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);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar