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