Ordenar números de menor a mayor y biceversa

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Ordenar números de menor a mayor y biceversa

Mensaje por Jonny »

Hola

Quiero hacer una función, que dándole unos números (desconocidos por mi y el programa) Cogidos de un archivo por ejemplo, los ordene de menor a mayor y biceversa.

La cantidad de los números a ordenar, debería poder ser variable...

Diría (al menos no me suena), que no hay ninguna función de AutoIt ni nativa ni de UDF para esto ¿no?. Si las hay, a ver si podeis decirme cual(es) son. Si no ¿Como puedo hacerlo? No se me ocurre, sin complicarme demasiado la vida ... :)

Acias,

Salu2!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Ordenar números de menor a mayor y biceversa

Mensaje por Chefito »

Bua, será por métodos de ordenamiento! Eso se estudia en la universidad (métodos de ordenamiento y de búsqueda). Mira en la wiki que te pone unos cuantos: http://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
Desde el algoritmo típico de burbuja (de los más lentos pero muy facil de implementar) hasta el shell. Mira en el foro ingles que seguro que encuentras funciones implementadas. Y si no las implementas tú que tampoco son tan difíciles :smt002 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Ordenar números de menor a mayor y biceversa

Mensaje por Jonny »

Hola

Ya he leído la wikypedia ... ¡no me he enterao de casi nada! :).

Necesitaría que fuera un algoritmo rápido... De momento no he encontrado nada en el foro inglés, seguiré buscando a ver que pasa.

Salu2!
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

Re: Ordenar números de menor a mayor y biceversa

Mensaje por gna08 »

Jonny escribió:Ya he leído la wikypedia ... ¡no me he enterao de casi nada! :).
deberias pensar un pokito. no es tan dificil, es cuestion de imaginar la situacion y buscarle la vuelta.-..

Basandome en el grafico k hay en ese articulo se me acaba de ocurrir una idea rapida y facil de enteder.. APARENTEMENTE DE ALGORRITO VELOZ xD :P (aunke no eh probado con cantidades enormes de numeros pero aparentemente es bastante veloz para lo sencillo k es)

emm. nose. es sencilla, estoi seguro k se puede mejorar, simplificar, no lo calcule demasiado, da vaaarias vueltas de mas si son muchos numeros, pero es para k te des 1 idea. solo te lo ordeno de menor a mayor, vos tenes k hacer la inversa, no te dara problemas aplicarlo.., ya k tenes k aplicarlo en un operador llogicoo.. mas facil imposiblee..
orden.zip
Odenador de numeros...
(506 Bytes) Descargado 560 veces
PD: si no le etnedes algo decimeee. te explico k hace...

Salu2 :smt006
Aunk no m Buskes, Seguro m enkontras!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ordenar números de menor a mayor y biceversa

Mensaje por Ximorro »

Empieza a hacer código y si te atascas nos lo pones y lo revisamos.

Y por haber sí hay un ordenamiento de vectores en AutoIt, en la udf Array.au3, es la función _ArraySort(), que tal como dice en la documentación usa un híbrido de quicksort (rápido, como indica su nombre) y método de inserción (no tan rápido, lo usará para los casos base).
Por supuesto ordena de mayor a menor y viceversa. Incluso puedes especificar rangos del vector a ordenar.

Lo del tamaño variable de elementos no es problema, una vez sepas cuántos son declaras la matriz, o si ya está creada la redimensionas con ReDim.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Ordenar números de menor a mayor y biceversa

Mensaje por Jonny »

Hola

Gracias Gna08 por el código.

Uf, si es verdad... _ArraySort()...

De esas funciones que he visto chafardeando por la carpeta "Examples" de AutoIt, y no he usado nunca....

La miraré a ver que tal, pero por lo que dices Ximorro, pinta ser la apropiada.

Acias,

Salu2!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ordenar números de menor a mayor y biceversa

Mensaje por Ximorro »

¿Examples? Bueno supongo que te refieres a que los scripts de la ayuda están en esa carpeta, pero la UDF viene con la instalación normal de AutoIT, y está en Include, con todas las demás UDF del sistema.

Puedes usarla directamente o adaptar el código a tu gusto, es lo bueno de tener los códigos fuente de las UDF.

Info algoritmos ordenación:
Aquí tenéis una página con un montón de métodos de ordenación, con applets para comprobarlos, y el código fuente en java (pero normalmente fácilmente traducible, pues se trata de manipular vectores):
http://people.cs.ubc.ca/~harrison/Java/ ... -demo.html

Ya estás implementando un Fast Quick Sort o un Radix Sort, ¡son rapidísimos!
No hagas los primeros (son muy educativos pero muy lentos), ni el último (Swap Sort), que es un experimento que no funciona bien.

El de Array.udf es más o menos equivalente a "Quick Sort with Bubblesort", pero en vez de usar el método de la burbuja para los casos simples, usa el de la inserción, que es bastante mejor.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Ordenar números de menor a mayor y biceversa

Mensaje por Jonny »

Hola

Jeje sí, exacto.
Esque, tengo la manía de ver las funciones de las UDF'S, en "Examples", en vez de mirar las UDF'S.

¡Gracias por la página! muy buena para aprender de esto, que pese a que está solucionado en AutoIt, no está de más saber implementar otros métodos.

Salu2!
Responder