Ordenando Números Ingresados en un List utilizando el método burbuja.

Para ordenar números de un arreglo se utilizan muchos métodos pero en este caso voy a utilizar el Método Burbuja.

Este Método consiste en ir revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada.

El formulario se ve de la siguiente manera:

Lo primero es tener un cuadro de texto en el cual escribir los números y luego irlos agregando al control List de la siguiente manera.

Private Sub cmdAgregar_Click()
    If txtNumero.Text <> "" Then ' se verifica que se ingresa un valor al control
       With List1
            .AddItem txtNumero.Text
            txtNumero.Text = ""
            txtNumero.SetFocus
       End With
    End If
End Sub

Hay que tener en cuenta que el control List tiene 2 opciones para ingresarle valores uno es usando el AddItem que corresponde a los elementos visibles del control y la otra propiedad es ItemData que corresponde al valor correspondiente a cada ítem agregado. Voy a dar un ejemplo:

List1.AddItem "Luis Fernando Martinez" 

List1.ItemData(.NewIndex) = 0

List1.AddItem "Carlos Gonzales" 

List1.ItemData(.NewIndex) = 1

Del ejemplo anterior vemos que el ItemData correspondiente a Luis Fernando es 0 y 1 para Carlos

La siguiente función se va a encargar de ordenar:

'Ordenamiento método burbuja
Sub Ordenar()

    Do
        n = 0 ' esta variable hace las veces de bandera comprobara que ya este ordenado
        
        For i = 1 To List1.ListCount - 1 'se lee uno a uno los item de la lista
                                         ' se inicia en 1 para poder leer el anterior
            List1.ListIndex = i - 1      ' se resta uno para tomar el numero anterior
             numero = List1.Text         ' se toma el numero
               
             List1.ListIndex = i         'numero siguiente
             temp = List1.Text
             
             If Val(numero) < Val(temp) Then 'se valida si el numero anterior es menor al siguiente
                List1.List(i - 1) = temp     ' si es menor se intercambia la posicion
                List1.List(i) = numero
                n = i                        ' se cambia el valor de la bandera para que siga el ciclo
             End If
             
        Next i
        
    Loop While (n <> 0) 'se repite hasta que n sea = 0

End Sub

Y se hace el llamado desde el evento clic del botón Ordenar.

Private Sub cmdOrdenar_Click()
    Call Ordenar
End Sub

Y por ultimo el botón salir

Private Sub cmdSalir_Click()
    Unload Me
End Sub

Descargar el proyecto Ordenamiento Burbuja (49 descargas )

Puedes el listado de las lecciones del curso en Curso de Creación de Software de Ventas en Visual Basic 6

No te olvides de Compartir 

Total Page Visits: 6616 - Today Page Visits: 1

Deja una respuesta