Algoritmo de Python-algoritmo de búsqueda binaria

Algoritmo (algoritmo)

El algoritmo se refiere a la descripción precisa y completa del esquema de resolución de problemas. Es una serie de instrucciones claras para resolver el problema. La instrucción en el algoritmo describe un cálculo que se puede ingresar desde un estado inicial y (posiblemente vacío) cuando se ejecuta. Al principio, después de una serie de estados limitados y claramente definidos, finalmente produce salida y se detiene en un estado final. El
algoritmo también es una parte indispensable de nuestro Python. Hoy aprenderemos sobre el algoritmo de búsqueda binaria en Python.

Búsqueda binaria

En nuestra vida diaria, si quiero encontrar un elemento en una lista, ¿qué métodos tenemos? Podemos comparar la búsqueda uno por uno. Si hay 100 elementos, tenemos que gastar 100 unidades de tiempo, que es más desperdicio Tiempo, al igual que cuando buscamos el número de teléfono de alguien en la guía telefónica, tenemos que buscar página por página, lo que requiere mucho tiempo y es laborioso. ¿Hay alguna forma de ahorrar más trabajo? La búsqueda binaria es una buena opción. La
búsqueda binaria es un algoritmo. , Su entrada es una lista ordenada de elementos (debe estar ordenada) , si el elemento a buscar está contenido en la lista, la búsqueda binaria devuelve su posición; de lo contrario, devuelve nulo. La función binary_search acepta una matriz y elementos ordenados. Si se especifica Si el elemento está en esta matriz, se devuelve su posición.
Al igual que el juego que solemos jugar: para
adivinar un número entre 1 y 100, tenemos dos métodos:
1. Comenzar con 1, luego 2, 3, 4, 5 ... saber El número que queremos adivinar, si el número es 1, está bien decir que lo logramos una vez, pero si el número es 100, tenemos que adivinar 100 veces
2. Adivinemos un número medio (50), y luego venimos Juzga si este número es mayor o menor que 50. Si es mayor que 50, la próxima vez se adivinará entre 51 y 100. Si es menor que 50, la próxima vez se adivinará entre 1 y 49, de modo que el rango de nuestra suposición será Siga haciéndose cada vez más pequeño hasta que la suposición sea correcta. De esta manera, solo necesitamos adivinar 7 veces como máximo para obtener la respuesta correcta. Esta es una búsqueda binaria.

def binary_search(list, item):  # 其输入的是一个列表和查找的元素
    a = 0   # 数字在0~列表的长度之间
    b = len(list) - 1
    while a <= b:   # 判断列表之中是否存在数字
        find_num = (a + b)      # 找到列表中间的那个数字
        num = list[find_num]
        if num == item:     # 判断查找的元素是否就是列表中间的数字
            return find_num     # 若是则返回中间的那个数字
        elif num > item:        # 若中间的那个数字大于查找的数字
            b = find_num - 1        # 则将查找范围的尾减半
        else:                   # 若中间的那个数字小于查找的数字
            a = find_num + 1        # 则将查找范围的首减半
    return None


my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 5))        # 结果为2
print(binary_search(my_list, -5))       # 结果为None

Supongo que te gusta

Origin blog.csdn.net/Layfolk_XK/article/details/108198743
Recomendado
Clasificación