Python: acerca de la búsqueda de elementos de secuencia ordenada
1 Introducción
Buscar elementos en secuencias ordenadas es una habilidad típica e importante en los algoritmos de Python. Al aprender a buscar elementos en secuencias ordenadas, podemos resolver problemas de ordenación más rápido. Las preguntas relacionadas con la búsqueda de secuencias también pueden reflejar mejor nuestro pensamiento de resolución de problemas y nuestras habilidades lógicas y mejorar nuestro nivel de codificación.
Encuentra el elemento. Generalmente, podemos usar un bucle for para recorrer y luego usar una declaración if para buscar. En comparación con el bucle for, el método de dicotomía es más conveniente. La idea de la dicotomía es que para una secuencia que ha sido ordenada según palabras clave, después de una comparación, la secuencia se puede dividir en dos partes y luego continuar buscando solo en la parte que puede contener el elemento a encontrar. y continúe dividiéndolo según los resultados de la prueba y reduzca gradualmente el rango de búsqueda hasta encontrarlo o no encontrarlo.
2 Descripción del problema
Ejemplo: Cómo encontrar un elemento en una secuencia ordenada
Entrada: Encuentre 61 pulg. Primero tome la mediana 50 entre 1-100 para comparar, porque 50 es menor que 61, así que excluya los números entre 1-50, y luego use la mediana 75 entre 51-100 para comparar, porque 75 es mayor que 61' Por lo tanto, Se excluyen los elementos entre 75 y 100. Luego utilice repetidamente este método para eliminar elementos redundantes hasta que queden los elementos que deben encontrarse (61).
4 Conclusión
Hay dos formas de buscar elementos en una secuencia ordenada: una es utilizar un bucle for para recorrer y buscar. La segunda es buscar por dicotomía. Es más conveniente utilizar el método binario para búsquedas que se realizarán muchas veces.
Adjunto
def my_func(my_list, searched_number): #Dichotomy
start_number_index = 0
end_number_index = len(my_list) - 1
while start_number_index <= end_number_index:
mid_number_index = (start_number_index = end_number_index) // 2
mid_number = mi_lista[mid_number_index]
if número_medio lt; número_buscado:
índice_número_inicial = índice_número_medio n 1
elif número_medio gt; número_buscado:
índice_número_final = índice_número_medio - 1
else :
return 'Encontré el número d que necesita ser buscado' número_buscado
mi_lista = lista(rango(1,101))
número_buscado = 61
print(my_func(my_list, mid_number))# El número que necesitamos encontrar es 61