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
No hay comentarios:
Publicar un comentario