Hola amigos.
Alguien sabría decir si existe una manera de ordenar una colección de acuerdo a sus valores, por ejemplo:
["perro"]=-3
["elefante"]=-2
["gato"]=1
["loro"]=-4
["hipopótamo"]=-2
La idea es ordenar de acuerdo el numero por ejemplo que quede así:
["loro"]=-4
["perro"]=-3
["elefante"]=-2
["hipopótamo"]=-2
["gato"]=1
(17-03-2023, 03:04)vuott escribió: [ -> ]Una vez escribiste este tema. No sé si te servirá de algo.
Gracias Vuott, había olvidado que escribí sobre este tema, pero de momento me sirve.
De la que hiciste, la transformé en dos.
GAMBAS
''Ordenar por la clave
aTmp.
Add(c.
Key & "\t" & sText
)
aTmp.Sort(gb.Ascent)
cTemp
[Split(sText,
"\t")[0]] = Split(sText,
"\t")[1]
''Ordenar por el valor
aTmp.
Add(sText
& "\t" & c.
Key)
aTmp.Sort(gb.Ascent + gb.Language + gb.IgnoreCase)
cTemp
[Split(sText,
"\t")[1]] = Split(sText,
"\t")[0]
Supongo que según donde lo apliques, ordenar una colección tiene su interés.
Como su búsqueda es por la clave, siempre será más rápido que un array.
Pero desde luego tienes un problema, que no se pueden repetir las claves.
Saludos
Cita:Como su búsqueda es por la clave, siempre será más rápido que un array.
En mi experiencia no. Los arrays son más rápidos siempre.
Saludos
(18-03-2023, 15:10)Shordi escribió: [ -> ]En mi experiencia no. Los arrays son más rápidos siempre.
Seria interesante ver un buen ejemplo.

Supongo que necesitaríamos una cantidad de datos razonables.
Tomado de un articulo que encontré de Java ( que probablemente guarda una similitud). Se compara los arrays con las colecciones.
Habla de arrays estáticos, que tienen un tamaño definido, lo contrarío que las colecciones que son dinámicas.
En Java existe otro tipo de arrays que no son estáticos.
En cuanto a rendimiento:
Cita:Las operaciones de recuperación y asignación en una array toman un tiempo constante. Sin embargo, una array no admite la operación de inserción
ya que su longitud se fija después de la creación.
Todas las Colecciones en Java facilitan las operaciones de recuperación, asignación e inserción. El tiempo que toman estas operaciones depende de
la estructura de datos subyacente. Pero sin duda, las arrays ofrecen un mejor rendimiento que las colecciones.
En cuanto a los tipos que almacena:
Cita:
Las arrays en Java pueden contener tipos de datos primitivos (int, char, long, float, double, boolean, etc.) y objetos Java (Integer, Character, Long, Float, Double, Boolean, String, etc.). Por el contrario, una colección puede contener elementos primitivos. Wrapper clases y objetos.
En cuanto al almacenamiento:
Cita:
Los arrays toman O(n) espacio para n número de elementos y no reservar ningún almacenamiento adicional. Por el contrario, la mayoría de las Colecciones reservan algo de almacenamiento adicional para nuevos elementos, y el espacio real que ocupan los contenidos depende de la implementación.
En cuanto a las dimensiones:
Cita:
La dimensión de una arrays es el número total de índices necesarios para seleccionar un elemento. Las arrays en Java admiten arrays unidimensionales y multidimensionales, mientras que una colección no tiene concepto de dimensiones. Sin embargo, podemos crear fácilmente Colecciones anidadas.
Probablemente encontremos ejemplos en un lenguaje más similar a Gambas como es Visual Basic que se pueda comprobar este tema.
En cuanto a que sea más rápido te refieres a los array estáticos, no los dinámicos, supongo.
Ya sabes lo malo que tiene el estático, que tienes que saber las dimensiones de antemano.
Saludos