Búsqueda Secuencial en Vector Desordenado en Visual Basic .NET (vb)

Un tema importante en la estructura de datos, es la búsqueda de estos. Muchas veces se pueden tener cantidades enormes de datos y su manipulación se vuelve cada vez mas complicada y tardada, es por esto que los métodos de búsquedas deben ser bastante eficaces para poder encontrar un dato especifico dentro de una gran cantidad de datos y en el menor tiempo posible.

Este método de búsqueda (secuencial) es sin duda el más sencillo y recomendable cuando tienes una cantidad de datos mínima, ya que es muy fácil de programar. La desventaja es que no es recomendable para bucar algun dato dentro de una cantidad muy grande de datos ya que su desempeño sería bastante lento.

El algoritmo es el siguiente:

Se toma el elemento a buscar y se compara con cada una de las posiciones del vector donde esta el conjunto de datos.
Esto se hace dentro de un ciclo el cual dejará de girar cuando se encuentre un numero igualal buscado o cuando se termine el vector.
Sí no se encontró el numero buscado, se envía un mensaje indicando que el elemento buscado no fue encontrado, de lo contrario haces lo que tu decidas con el elemento encontrado.

He aquí el diagrama de flujo:

Y aquí está el codigo en VB.Net

[vbnet]
Public Class Form1
Dim vec(999) As Integer
Dim a As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim rand As New Random
Dim cad As String = “”

For a = 0 To 999 ‘generamos un vector de 1000 elementos con numeros aleatorios
vec(a) = rand.Next(0, 4000)
cad &= vec(a) & vbNewLine ‘almacenamos en una cadena ese vector para imprimirlo en un cuadro de texto
Next

txt.Text = cad ‘imprimimos el vector en un cuadro de texto
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer = txtn.Text
r.Text = “”
a = 0
While (a < vec.Length) ‘mientras NO llegue al final del vector
If (vec(a) = n) Then ‘el elemento buscado es igual al elemento del vector en la posicion del incrementador?
r.Text = vec(a) & ” esta en la posicion ” & a ‘imprimimos resultado
a = vec.Length ‘a la variable incrementador le asignamos el largo del vector para provocar la salida del ciclo
Else
a += 1
End If
End While

If r.Text.Length = 0 Then r.Text = “# no encontrado” ‘si salimos del ciclo y aun no habíamos mostrado mensaje de “# encontrado” significa que no se encontró el elemento buscado

End Sub
End Class
[/vbnet]

Aquí te dejo el archivo completo para que te lo descargues ;)

Descarga
//

// ]]>

Fuente del algoritmo
Share Button

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *