Ordenar Array De Array

Ordenar Array De Array
Artículo
Citar    Descargar mensaje  
Mensaje 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 
Shell - Perfil MP  
Shell [ Sabado, 29 Septiembre 2018, 14:10 ]


Ordenar Array De Array
Comentarios
Citar    Descargar mensaje  
Mensaje 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



 
Shell - Perfil MP  
Shell [ Sabado, 29 Septiembre 2018, 19:34 ]
Mostrar mensajes anteriores:    
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 


   

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.1204s (PHP: -11% SQL: 111%)
Consultas SQL: 24 - Debug off - GZIP Activado