La Ordenación de
burbuja (Bubble
Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona 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.
Este algoritmo obtiene su nombre de la forma con la que
suben por la lista los elementos durante los intercambios, como si fueran
pequeñas "burbujas". También es conocido como el método del
intercambio directo.
Dado que solo usa comparaciones para operar elementos, se lo considera un
algoritmo de comparación, siendo el más sencillo de implementar.
A continuación se muestra un
ejemplo de la implementación del método burbuja en visual Basic 2010.net.
Para realizar la aplicación
es necesario crear una interfaz como la siguiente:
La cual consta de:
·
2 Listbox
·
1 Grupbox
·
3 Label
·
3 Textbox
·
2 Botones
Nota: Los
label,textbox y botones van colocados dentro del grupbox.
El código que se emplea para
el botón generar es el siguiente.
Dim numAleatorio As New Random ' se declara una
variable de tipo Random
'para genera los numeros de forma aleatoria
Dim tamano As
Integer = 0 'se
declara una variable de tipo entero para indicar en tamaño
tamano = Val(txtTamano.Text) - 1 'indica que
al tamaño se le resta 1
LstNumeros.Items.Clear() ' limpia las lista de
elementos
'llena la lista con numeros aleatorios
For I As
Integer = 0 To
tamano 'emplea un un ciclo para generar los numeros
de manera automatica
LstNumeros.Items.Add(numAleatorio.Next(Val(txtmin.Text),
Val(txtmax.Text)))
'genera
la lista en un listBox
El código que se emplea para
el botón ordenar es el siguiente.
Dim vueltas As Integer = 0 ' se declara una variable para contar las vueltas
Dim comparaciones As Integer = 0 ' se declara una variable para contar las comparaciones
Dim puntero As
Integer = 0 'indica
en que posiciòn se encuentra el puntero
Dim Auxiliar As
Integer = 0 '
sedeclara una variable que se utilizara para el almacenamiento temporal
vueltas = LstNumeros.Items.Count - 1 'indica
las vueltas
LstExplicacion.Items.Clear() 'limpia la lista
de numeros
'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)
For j As Integer = 1 To
comparaciones
'se
declara un ciclo para contar el numero de comparaciones
LstExplicacion.Items.Add("
COMPARACION :" &
j & " SI " & LstNumeros.Items(puntero)
& " > " &
LstNumeros.Items(puntero + 1))
If
LstNumeros.Items(puntero) > LstNumeros.Items(puntero + 1) Then
LstExplicacion.Items.Add(" SE
INTERCAMBIA EL " &
LstNumeros.Items(puntero) & " CON EL
" & LstNumeros.Items(puntero + 1))
'para
realizar el intercambio
Auxiliar =
LstNumeros.Items(puntero + 1)
LstNumeros.Items(puntero +
1) = LstNumeros.Items(puntero)
LstNumeros.Items(puntero) =
Auxiliar
End
If
puntero = puntero + 1
LstExplicacion.Items.Add(fotoVaector(LstNumeros))
Next
Next
Una forma de entender mejor este método es
mediante una explicación para ello se
emplea una función que permitirá realizar esto.
Dim auxListas As String
For
i As Integer =
0 To lista.Items.Count - 1
auxListas = auxListas
& lista.Items(i) & " "
Next
fotoVector =
auxListas
Nota: La
función ya ha sido implementada en el código presentado anteriormente. (Botón
ordenar).
No hay comentarios:
Publicar un comentario