Ordenar Array De Array


Objetivo: Ordenar Array De Array
Buenas tardes!.

En este ejemplo tengo un nombre y una edad.
La idea es ordenar por edades.

Public Sub Main()

Dim nombre_edad As New Variant[][]
Dim una_persona As Variant

una_persona = ["Juan", 32]
nombre_edad.Add(una_persona)

una_persona = ["Luis", 45]
nombre_edad.Add(una_persona)

Stop

nombre_edad.Sort(gb.Descent)

Stop

End


Cuando llega al primer Stop se presenta algo como esto:

ordenarporedad_1_2

Ahora ordenamos por orden descendente.

ordenar_por_edad_2_2

Añadamos ahora una tercera persona:


...
'Usemos un tercero

una_persona = ["Rosa", 17]
nombre_edad.Add(una_persona)

Stop

nombre_edad.Sort(gb.Descent)

Stop

End


a_adotercerapersona

A lo que Rosa aparece desordenada.
Ordenamos una vez más.

ordennovalido

Aunque ha situado correctamente a Rosa, el orden de Juan y Luis es el que tenía después de ordenar la primera vez.
Con lo que aparentemente no se debe ordenar dos veces, añadir datos y luego ordenar.

¿ Cómo sabe que no quiero ordenar por nombres ?.

¿ Y si no esta ordenando por números ?...

Si va a la inversa y por letras...entonces es lo correcto...
R L J...va por la primera ordenando es lo que parece.

Saludos

última edición por Shell el Sabado, 29 Septiembre 2018, 14:17; editado 2 veces
Objetivo: Re: Ordenar Array De Array
Esto puede tener más sentido: [ edad, nombre ]

Public Sub Main()

Dim edad_nombre As New Variant[][]
Dim una_persona As Variant

una_persona = [32, "Juan"]
edad_nombre.Add(una_persona)

una_persona = [45, "Luis"]
edad_nombre.Add(una_persona)

Stop

edad_nombre.Sort(gb.Descent)

Stop

'Usemos un tercero

una_persona = [50, "Rosa"]
edad_nombre.Add(una_persona)

Stop

edad_nombre.Sort(gb.Descent)

Stop

End


Equivalencia con Python.

edades_nombre = []

# Paso a paso

# Añadiendo una persona
persona = [32, 'Juan' ]
edades_nombre.append(persona)

# Ordenando inversamente
edades_nombre.sort(reverse = True)

# Mostrando
print (edades_nombre)

# Añadiendo otra persona
persona = [ 45, 'Luis']
edades_nombre.append(persona)

# Ordenando inversamente
edades_nombre.sort(reverse = True)

# Mostrando
print (edades_nombre)

# Añadiendo una persona
persona = [50, 'Rosa' ]
edades_nombre.append(persona)

# Ordenando inversamente
edades_nombre.sort(reverse = True)

# Mostrando
print (edades_nombre)


Salida:

Citar:

[[32, 'Juan']]
[[45, 'Luis'], [32, 'Juan']]
[[50, 'Rosa'], [45, 'Luis'], [32, 'Juan']]




Saludos


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4591s (PHP: -74% SQL: 174%)
Consultas SQL: 46 - Debug off - GZIP Activado