Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Implementar la búsqueda es siempre un reto, pero no imposible

En la vida real, buscaremos sin seguir ningún patrón. Simplemente vamos a los lugares en los que creemos que puede estar. No seguimos ningún patrón en la mayoría de los casos

¿Ocurre lo mismo en el mundo de la programación?

No! tiene que haber algún patrón para buscar cosas en los programas. Vamos a ver algunos algoritmos que siguen diferentes patrones para buscar en este artículo

Hay múltiples algoritmos que podemos encontrar en el mundo de la programación. Vamos a discutir los algoritmos más importantes y más utilizados en este artículo. El resto de algoritmos le resultará muy fácil de aprender

Buscar se refiere a buscar un elemento en el array en este artículo

Veámoslos uno a uno

Búsqueda lineal

El nombre sugiere que el algoritmo de búsqueda lineal sigue elpatrón lineal para buscar los elementos en un array. El algoritmo empieza a buscar el elemento desde el principio del array y se mueve hacia el final hasta que encuentra el elemento. Detiene la ejecución del programa cuando encuentra el elemento deseado

Vamos a ilustrar los algoritmos de búsqueda lineal con algunas ilustraciones interesantes para una mejor comprensión del algoritmo

Si observa detenidamente el patrón de búsqueda, comprobará que el tiempo de ejecución del programa será O(n) en el peor de los casos. Tenemos que considerar la complejidad temporal en el peor de los casos de los algoritmos a analizar. Por lo tanto, la complejidad temporal del algoritmo es O (n)

Veamos la implementación del algoritmo de búsqueda lineal

Implementación de la búsqueda lineal

Ahora ya entiende bien el algoritmo de búsqueda lineal. Es hora de ensuciarnos las manos con algo de código. Veamos primero los pasos para implementar la búsqueda lineal. A continuación, intente codificarla. No se preocupe aunque no pueda; después le proporcionaré el código

Veamos los pasos para implementar el algoritmo de búsqueda lineal

  • Inicialice una matriz de elementos (sus números de la suerte).
  • Escriba una función llamada buscar_elemento , que acepta tres argumentos, array, longitud del array y elemento a buscar.
  • buscar_elemento(arr, n, elemento)
    • Iterar sobre la matriz dada
      • Comprueba si el elemento actual es igual al elemento buscado.
      • En caso afirmativo, devuelva Verdadero.
    • Después de completar el bucle, si la ejecución sigue en la función, entonces el elemento no está presente en el array. Por lo tanto devuelve Falso.
  • Imprima el mensaje basado en el valor de retorno de la función buscar_elemento.

Por último, escriba el código con la ayuda de los pasos anteriores para implementar el algoritmo de búsqueda lineal

¿Ha completado la implementación del algoritmo de búsqueda lineal? Espero que sí. Si la ha completado, compruébelo con el siguiente código

Si no lo completó, no se preocupe,; vea el siguiente código y aprenda cómo lo implementamos. Lo conseguirá sin mucho esfuerzo

## función de búsqueda
def buscar_elemento(arr, n, elemento):

## iterando a través del array
for i in range(n):

## comprobando el elemento actual con el elemento requerido
if arr[i] == elemento:
## devolviendo True en caso de coincidencia
return True

## el elemento no se encuentra de ahí que la ejecución venga aquí
return False


if __name__ == '__main__':
	## inicializar la matriz, la longitud y el elemento a buscar
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
n = 10
elemento_a_buscar = 6
# elemento_a_buscar = 11

if buscar_elemento(arr, n, elemento_a_buscar):
		print(elemento_a_buscar, "se encuentra")
else:
print(elemento_a_buscar, "no se encuentra")

Primero, ejecútelo con un elemento que esté presente en la matriz. Y a continuación, ejecútelo con un elemento que no esté presente en la matriz

La complejidad temporal del algoritmo de búsqueda lineal es O(n)

¿Podemos reducirla un poco más con diferentes patrones?

Sí, podemos. Veámoslo

Búsqueda binaria

El algoritmo de búsqueda binaria comprueba siempre el elemento central de la matriz. Este algoritmo busca el elemento en una matriz ordenada

El algoritmo de búsqueda binaria itera sobre la matriz y comprueba el elemento del medio, si lo encuentra, entonces detiene el programa. Si el elemento medio es menor que el elemento requerido, entonces omite la parte izquierda de la matriz del elemento medio de la búsqueda. Si el elemento central es mayor que el elemento requerido, omite la parte derecha de la matriz del elemento central de la búsqueda

En cada iteración, el algoritmo de búsqueda binaria reduce el área de búsqueda del elemento. Así, el número de comprobaciones es menor que el número de comprobaciones realizadas en el algoritmo de búsqueda lineal

Las ilustraciones nos ayudan a comprender mejor el algoritmo de búsqueda binaria. Vamos a verlas

La complejidad temporal del algoritmo de búsqueda binaria es O(log n). En cada iteración, la longitud del área de búsqueda se reduce a la mitad. Se reduce exponencialmente

Implementación de la búsqueda binaria

Primero veremos los pasos para implementar el algoritmo de búsqueda binaria y después el código. Veamos los pasos para completar la implementación del algoritmo de búsqueda binaria

  • Inicialice la matriz con elementos (sus números de la suerte)
  • Escriba una función llamada buscar_elemento , que acepte tres argumentos, matriz ordenada, longitud de la matriz y elemento a buscar.
  • buscar_elemento(matriz_ordenada, n, elemento)
    • Inicialice la variable de índice i para la iteración del array.
    • A continuación, inicialice dos variables para mantener el área de búsqueda del array. Aquí las llamamos inicio y aleta porque indican índices.
    • Itere hasta que i mar menor que la longitud del array
      • Calcule el índice medio del área de búsqueda utilizando los valores de inicio y aleta . Será (inicio fin) // 2.
      • Compruebe si el elemento indexado del medio de la zona de búsqueda es igual al elemento requerido o no.
      • En caso afirmativo, devolverá Verdadero.
      • De lo contrario, si el elemento indexado del medio es menor que el elemento requerido, entonces mueva el índice de inicio del área de búsqueda al medio 1.
      • Else si el elemento indexado medio es mayor que el elemento requerido, entonces mueva el índice final del área de búsqueda a medio 1.
      • Incremente el índice de la matriz i.
    • Después de completar el bucle, si la ejecución sigue en la función, entonces el elemento no está presente en el array. Por lo tanto devuelve Falso.
  • Imprima el mensaje basado en el valor de retorno de la función buscar_elemento.

Intente escribir el código de forma similar a la implementación del algoritmo de búsqueda lineal

..

¿Ha conseguido el código?

Sí, compárelo con el código siguiente. No, no se preocupe; entienda la implementación con el código de abajo

## función de búsqueda
def buscar_elemento(array_ordenado, n, elemento):

## índice del array para la iteración
i = 0

## variables para rastrear el área de búsqueda
## inicializándolas con los índices de inicio y fin
inicio = 0
fin = n - 1

## iterando sobre el array
while i < n:
		## obteniendo el índice del elemento medio
medio = (inicio fin) // 2

## comprobando el elemento medio con el elemento requerido
si sorted_arr<x>[medio]</x> == elemento:
## devolviendo True ya que el elemento está en la matriz
return True
elif sorted_arr<x>[medio]</x> < elemento:
			## moviendo el índice de inicio de la zona de búsqueda a la derecha
inicio = medio 1
si no:
## moviendo el índice de fin de la zona de búsqueda a la izquierda
fin = medio - 1
i = 1
return False


if __name__ == '__main__':
	## inicializar la matriz, la longitud y el elemento a buscar
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
n = 10
elemento_a_buscar = 9
# elemento_a_buscar = 11

if buscar_elemento(arr, n, elemento_a_buscar):
		print(elemento_a_buscar, "se encuentra")
else:
print(elemento_a_buscar, "no se encuentra")

Pruebe el código con diferentes casos en los que el elemento esté presente y no lo esté en algunos casos

Conclusión

El algoritmo de búsqueda binaria es mucho más eficiente que el algoritmo de búsqueda lineal. Necesitamos ordenar el array para el algoritmo de búsqueda binaria no es el caso en el algoritmo de búsqueda lineal. La ordenación requiere cierto tiempo. Pero, el uso de algoritmos eficientes para la ordenación formará una buena combinación con el algoritmo de búsqueda binaria

Ahora, tiene un buen conocimiento de los algoritmos más utilizados en Python

A continuación, descubra algunos de los programas de búsqueda autoalojados más populares

Feliz codificación 🙂 🧑‍💻

  • Hafeezul Kareem Shaik
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder