EJERCICIO 1
Realizar una aplicación que contenga la función "Buscar", a la que se le pasará un array de números enteros y el elemento a buscar. Debe devolver un Boolean indicando si lo ha encontrado (true) o no (false).
Module Module1
Sub Main()
Dim numeros() As Integer = {32, 5, 3, 2, 66, 2, 7, 45, 90}
Dim num As Integer = 91
Dim encontrado As Boolean = Buscar(numeros, num)
Console.WriteLine(encontrado)
Console.ReadKey()
End Sub
Function Buscar(ByVal numeros() As Integer, ByVal num As Integer) As Boolean
Dim encontrado As Boolean = False
For Each n As Integer In numeros
If (n = num) Then
encontrado = True
End If
'Si lo encuentra, sale del "for"
If encontrado Then Exit For
Next
Return encontrado
End Function
End Module
EJERCICIO 2
Modificar la función anterior para que implemente el algoritmo de búsqueda dicotómica. En este caso se le pasará un array ordenado de menor a mayor.
Module Module1
Sub Main()
Dim numeros() As Integer = {2, 2, 3, 5, 7, 32, 45, 66, 90}
Dim num As Integer = 4
Dim encontrado As Boolean = Buscar(numeros, num)
Console.WriteLine(encontrado)
Console.ReadKey()
End Sub
Function Buscar(ByVal numeros() As Integer, ByVal num As Integer) As Boolean
Dim izquierda As Integer = 0
Dim derecha As Integer = numeros.Length - 1
Dim centro As Integer
While (izquierda <= derecha)
centro = (izquierda + derecha) / 2
If (numeros(centro) = num) Then
Return True
End If
If (numeros(centro) > num) Then
derecha = centro - 1
ElseIf (numeros(centro) < num) Then
izquierda = centro + 1
End If
End While
Return False
End Function
End Module
EJERCICIO 3
Modificar de nuevo la función para que en lugar de un Boolean indicando si ha encontrado o no el elemento buscado, devuelva un entero indicando la posición donde se encuentra dicho elemento. Si el array no contiene ese elemento, devolverá -1.
Module Module1
Sub Main()
Dim numeros() As Integer = {2, 2, 3, 5, 7, 32, 45, 66, 90}
Dim num As Integer = 90
Dim posicion As Integer = Buscar(numeros, num)
If (posicion = -1) Then
Console.WriteLine("No encontrado")
Else
Console.WriteLine("Encontrado en la posicion: " & posicion)
End If
Console.ReadKey()
End Sub
Function Buscar(ByVal numeros() As Integer, ByVal num As Integer) As Integer
Dim izquierda As Integer = 0
Dim derecha As Integer = numeros.Length - 1
Dim centro As Integer
While (izquierda <= derecha)
centro = (izquierda + derecha) / 2
If (numeros(centro) = num) Then
Return centro
End If
If (numeros(centro) > num) Then
derecha = centro - 1
ElseIf (numeros(centro) < num) Then
izquierda = centro + 1
End If
End While
Return -1
End Function
End Module