martes, 3 de diciembre de 2013

MÉTODO BURBUJA


Existen varios métodos para ordenar los datos en Visual Basic como lo son el método de burbuja y el método de selección estos nos ayudan a ordenar los datos un en vector para acomodarlos de mayor a menor o viceversa a fin de manipular dichos datos a nuestra conveniencia.

Este el diseño realizado para el proyecto


Se utiliza el siguiente código:

Public Class Form1

    Private Sub btnGenerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerar.Click
        Dim numAleatorio As New Random

        Dim tamano As Integer = 0
        tamano = Val(txtTamano.Text) - 1

        '********limpia el listbox*****************
        lstNumeros.Items.Clear()

        '*********llena la lista(Vector) con numeros aleatorios************
        For i As Integer = 0 To tamano
            lstNumeros.Items.Add(numAleatorio.Next(Val(txtMin.Text), Val(txtMax.Text)))
        Next

    End Sub

    Private Sub btnOrdenar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOrdenar.Click

        Dim puntero As Integer = 0
        Dim comparaciones As Integer
        Dim vueltas As Integer = 0
        Dim aux As Integer = 0
        vueltas = lstNumeros.Items.Count - 1

        '************controla el numero de vueltas que dara el metodo burbuja*************
        For i As Integer = 1 To vueltas

            '************determina el numero de comparaciones por cada vuelta****************
            comparaciones = lstNumeros.Items.Count - i
            puntero = 0

            lstExplicacion.Items.Add("vuelta:" & i & "****************************")

            '*************controla el numero de comparaciones que va a ver durante las vueltas****************
            For j As Integer = 1 To comparaciones

                lstExplicacion.Items.Add("    Comparación: " & j & " Si " & lstNumeros.Items(puntero) & " > " & lstNumeros.Items(puntero + 1))

                '************relizamos la comparacion de el primer numero con el segundo************
                If lstNumeros.Items(puntero) > lstNumeros.Items(puntero + 1) Then

                    lstExplicacion.Items.Add("         se intercambia el " & lstNumeros.Items(puntero) & " con el " & lstNumeros.Items(puntero + 1))

                    '********guardamos el valor del segundo numero*********
                    aux = lstNumeros.Items(puntero + 1)
                    '*********pasamos el segundo numero al primero**************
                    lstNumeros.Items(puntero + 1) = lstNumeros.Items(puntero)
                    '*************guardamos el valor del segundo numero al primero*****************
                    lstNumeros.Items(puntero) = aux

                End If

                '**********se incrementa el puntero para la segunda vuelta**************
                puntero = puntero + 1
                lstExplicacion.Items.Add(fotovector(lstNumeros))

            Next
        Next

    End Sub

    Public Function fotovector(ByVal Lista As ListBox) As String
        Dim auxlista As String = ""

        For i As Integer = 0 To Lista.Items.Count - 1
            auxlista = auxlista & Lista.Items(i) & "  "
        Next
        fotovector = auxlista
    End Function

En este link podrá encontrar el proyecto ya funcional.

No hay comentarios:

Publicar un comentario