Página 1 de 1

Ordenar números de menor a mayor y biceversa

Publicado: 03 Dic 2010, 19:15
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!

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

Publicado: 04 Dic 2010, 01:53
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.

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

Publicado: 05 Dic 2010, 11:07
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!

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

Publicado: 06 Dic 2010, 07:38
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 507 veces
PD: si no le etnedes algo decimeee. te explico k hace...

Salu2 :smt006

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

Publicado: 07 Dic 2010, 09:53
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.

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

Publicado: 07 Dic 2010, 10:38
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!

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

Publicado: 07 Dic 2010, 12:40
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.

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

Publicado: 09 Dic 2010, 09:50
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!