Menu iconMenu icon
Introducción a los Algoritmos

Capítulo 5: Algoritmos de Búsqueda

5.4 Problemas Prácticos

Problema 1: Búsqueda Lineal

Escribe una función en Python para implementar un algoritmo de búsqueda lineal. La función debe tomar una lista y el valor objetivo como parámetros y devolver el índice del valor objetivo si está en la lista, de lo contrario, devolver -1.

Solución:

def linear_search(lst, target):
    for i in range(len(lst)):
        if lst[i] == target:
            return i
    return -1

Problema 2: Búsqueda Binaria

Implementa una función en Python para una búsqueda binaria. La función debe tomar una lista ordenada y el valor objetivo como parámetros. Si el valor objetivo está en la lista, devuelve su índice. De lo contrario, devuelve -1.

Solución:

def binary_search(lst, target):
    left, right = 0, len(lst) - 1
    while left <= right:
        mid = (left + right) // 2
        if lst[mid] == target:
            return mid
        elif lst[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

Problema 3: Hashing

Supongamos que has implementado una tabla hash con encadenamiento para manejar colisiones. Ahora, se te dan las claves: 10, 22, 31, 4, 15, 28, 17, 88, 59. Escribe una función en Python para construir la tabla hash usando la función hash clave mod 10.

Solución:

def build_hash_table(keys):
    hash_table = [[] for _ in range(10)]  # Initialize hash table as a list of empty lists
    for key in keys:
        hash_key = key % 10  # Compute hash key
        hash_table[hash_key].append(key)  # Insert key into appropriate bucket
    return hash_table

keys = [10, 22, 31, 4, 15, 28, 17, 88, 59]
print(build_hash_table(keys))

Problema 4: Búsqueda Binaria vs Búsqueda Lineal

Dada una lista de 1000 elementos, ¿en qué punto (número de elementos) se vuelve más rápido usar una búsqueda binaria en lugar de una búsqueda lineal? Explica tu razonamiento.

Estos problemas te ayudarán a practicar lo que has aprendido sobre algoritmos de búsqueda. Las soluciones a los problemas están en la siguiente sección. Como siempre, te animaría a intentar los problemas primero antes de mirar las soluciones. ¡Feliz codificación!

En el próximo capítulo, profundizaremos en los algoritmos de ordenamiento, que son otro aspecto fundamental del pensamiento algorítmico. ¡Espero que estés emocionado de continuar en este viaje!

5.4 Problemas Prácticos

Problema 1: Búsqueda Lineal

Escribe una función en Python para implementar un algoritmo de búsqueda lineal. La función debe tomar una lista y el valor objetivo como parámetros y devolver el índice del valor objetivo si está en la lista, de lo contrario, devolver -1.

Solución:

def linear_search(lst, target):
    for i in range(len(lst)):
        if lst[i] == target:
            return i
    return -1

Problema 2: Búsqueda Binaria

Implementa una función en Python para una búsqueda binaria. La función debe tomar una lista ordenada y el valor objetivo como parámetros. Si el valor objetivo está en la lista, devuelve su índice. De lo contrario, devuelve -1.

Solución:

def binary_search(lst, target):
    left, right = 0, len(lst) - 1
    while left <= right:
        mid = (left + right) // 2
        if lst[mid] == target:
            return mid
        elif lst[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

Problema 3: Hashing

Supongamos que has implementado una tabla hash con encadenamiento para manejar colisiones. Ahora, se te dan las claves: 10, 22, 31, 4, 15, 28, 17, 88, 59. Escribe una función en Python para construir la tabla hash usando la función hash clave mod 10.

Solución:

def build_hash_table(keys):
    hash_table = [[] for _ in range(10)]  # Initialize hash table as a list of empty lists
    for key in keys:
        hash_key = key % 10  # Compute hash key
        hash_table[hash_key].append(key)  # Insert key into appropriate bucket
    return hash_table

keys = [10, 22, 31, 4, 15, 28, 17, 88, 59]
print(build_hash_table(keys))

Problema 4: Búsqueda Binaria vs Búsqueda Lineal

Dada una lista de 1000 elementos, ¿en qué punto (número de elementos) se vuelve más rápido usar una búsqueda binaria en lugar de una búsqueda lineal? Explica tu razonamiento.

Estos problemas te ayudarán a practicar lo que has aprendido sobre algoritmos de búsqueda. Las soluciones a los problemas están en la siguiente sección. Como siempre, te animaría a intentar los problemas primero antes de mirar las soluciones. ¡Feliz codificación!

En el próximo capítulo, profundizaremos en los algoritmos de ordenamiento, que son otro aspecto fundamental del pensamiento algorítmico. ¡Espero que estés emocionado de continuar en este viaje!

5.4 Problemas Prácticos

Problema 1: Búsqueda Lineal

Escribe una función en Python para implementar un algoritmo de búsqueda lineal. La función debe tomar una lista y el valor objetivo como parámetros y devolver el índice del valor objetivo si está en la lista, de lo contrario, devolver -1.

Solución:

def linear_search(lst, target):
    for i in range(len(lst)):
        if lst[i] == target:
            return i
    return -1

Problema 2: Búsqueda Binaria

Implementa una función en Python para una búsqueda binaria. La función debe tomar una lista ordenada y el valor objetivo como parámetros. Si el valor objetivo está en la lista, devuelve su índice. De lo contrario, devuelve -1.

Solución:

def binary_search(lst, target):
    left, right = 0, len(lst) - 1
    while left <= right:
        mid = (left + right) // 2
        if lst[mid] == target:
            return mid
        elif lst[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

Problema 3: Hashing

Supongamos que has implementado una tabla hash con encadenamiento para manejar colisiones. Ahora, se te dan las claves: 10, 22, 31, 4, 15, 28, 17, 88, 59. Escribe una función en Python para construir la tabla hash usando la función hash clave mod 10.

Solución:

def build_hash_table(keys):
    hash_table = [[] for _ in range(10)]  # Initialize hash table as a list of empty lists
    for key in keys:
        hash_key = key % 10  # Compute hash key
        hash_table[hash_key].append(key)  # Insert key into appropriate bucket
    return hash_table

keys = [10, 22, 31, 4, 15, 28, 17, 88, 59]
print(build_hash_table(keys))

Problema 4: Búsqueda Binaria vs Búsqueda Lineal

Dada una lista de 1000 elementos, ¿en qué punto (número de elementos) se vuelve más rápido usar una búsqueda binaria en lugar de una búsqueda lineal? Explica tu razonamiento.

Estos problemas te ayudarán a practicar lo que has aprendido sobre algoritmos de búsqueda. Las soluciones a los problemas están en la siguiente sección. Como siempre, te animaría a intentar los problemas primero antes de mirar las soluciones. ¡Feliz codificación!

En el próximo capítulo, profundizaremos en los algoritmos de ordenamiento, que son otro aspecto fundamental del pensamiento algorítmico. ¡Espero que estés emocionado de continuar en este viaje!

5.4 Problemas Prácticos

Problema 1: Búsqueda Lineal

Escribe una función en Python para implementar un algoritmo de búsqueda lineal. La función debe tomar una lista y el valor objetivo como parámetros y devolver el índice del valor objetivo si está en la lista, de lo contrario, devolver -1.

Solución:

def linear_search(lst, target):
    for i in range(len(lst)):
        if lst[i] == target:
            return i
    return -1

Problema 2: Búsqueda Binaria

Implementa una función en Python para una búsqueda binaria. La función debe tomar una lista ordenada y el valor objetivo como parámetros. Si el valor objetivo está en la lista, devuelve su índice. De lo contrario, devuelve -1.

Solución:

def binary_search(lst, target):
    left, right = 0, len(lst) - 1
    while left <= right:
        mid = (left + right) // 2
        if lst[mid] == target:
            return mid
        elif lst[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

Problema 3: Hashing

Supongamos que has implementado una tabla hash con encadenamiento para manejar colisiones. Ahora, se te dan las claves: 10, 22, 31, 4, 15, 28, 17, 88, 59. Escribe una función en Python para construir la tabla hash usando la función hash clave mod 10.

Solución:

def build_hash_table(keys):
    hash_table = [[] for _ in range(10)]  # Initialize hash table as a list of empty lists
    for key in keys:
        hash_key = key % 10  # Compute hash key
        hash_table[hash_key].append(key)  # Insert key into appropriate bucket
    return hash_table

keys = [10, 22, 31, 4, 15, 28, 17, 88, 59]
print(build_hash_table(keys))

Problema 4: Búsqueda Binaria vs Búsqueda Lineal

Dada una lista de 1000 elementos, ¿en qué punto (número de elementos) se vuelve más rápido usar una búsqueda binaria en lugar de una búsqueda lineal? Explica tu razonamiento.

Estos problemas te ayudarán a practicar lo que has aprendido sobre algoritmos de búsqueda. Las soluciones a los problemas están en la siguiente sección. Como siempre, te animaría a intentar los problemas primero antes de mirar las soluciones. ¡Feliz codificación!

En el próximo capítulo, profundizaremos en los algoritmos de ordenamiento, que son otro aspecto fundamental del pensamiento algorítmico. ¡Espero que estés emocionado de continuar en este viaje!