(Algoritmo) Tres ejemplos te permiten entender la dicotomía

Describa brevemente las diferencias y ventajas de la dicotomía y la clasificación convencional

Por lo general, buscamos el valor máximo en una matriz ordenada, o buscamos un número determinado. La forma más común es atravesar, como comparar de izquierda a derecha, la complejidad del tiempo es O (N) y usar el método de dicotomía. , entonces la complejidad del tiempo se puede controlar a O (logN, log (2, N generalmente se abrevia como logN aquí)).

El primer ejemplo simple para obtener una comprensión preliminar.

  • Encuentra un número especificado en una matriz ordenada.

(1) Práctica convencional, atravesando un lado O(N)

(2) Use el método de dicotomía: encontramos la posición media de toda la matriz y la comparamos con el número especificado que necesitamos encontrar.Si el número medio es más pequeño que el número objetivo, podemos determinar que el número está en el lado derecho de toda la matriz, y luego la mitad derecha La matriz se divide en dos, encuentre el número en el medio para comparar y continúe dividiendo hasta encontrar el número.

Porque cada vez que se compara la mitad de la parte restante, la complejidad del tiempo es O(logN)

segundo caso

  • En una matriz ordenada, encuentre la posición más a la izquierda mayor o igual a (<=) cierto número.

 

 Por ejemplo, en la matriz ordenada anterior, nuestro objetivo es encontrar el número más a la izquierda que sea menor o igual a 2, primero dividirlo en dos, encontrar el 2 del medio, que es igual al número objetivo (pero no estoy seguro si es es el número más a la izquierda), elegimos la mitad izquierda. Dividimos la matriz en dos, obtenemos 1, que es más pequeño que el número objetivo, lo que indica que el número objetivo está a su derecha, lo tomamos como el límite izquierdo y los 2 anteriores como límite derecho, continúe dividiendo en dos, igual a 2, y luego descubra que solo hay 1 a la izquierda de 1. Obtenga el número objetivo que estamos buscando. (pd: una diferencia importante entre este y el ejemplo anterior, debe ser dicotomizado hasta el final para obtener nuestro resultado)

tercer caso

(La dicotomía no solo se usa en arreglos ordenados, también es aplicable en arreglos desordenados)

  • En una matriz desordenada, es necesario encontrar un número mínimo local. (Mínimo local significa que un número es más pequeño que sus dos lados, como [312], "1" en la matriz es el mínimo local, y el número en ambos extremos [132], "1" y "2" en el array son ambos mínimos locales)

Cuando nos encontramos con un problema, primero debemos fijarnos en sus características, si está ordenado o no.

Primero verifica si los números de ambos extremos son el mínimo local, si es así, puedes regresar directamente, si no, dividimos en dos, encuentra el número del medio para ver si es el mínimo local, si no, es mayor que el números en ambos lados, entonces, ya sea a la izquierda o a la derecha Debe haber un mínimo local, vea la figura a continuación como referencia.

 Deben tener una tendencia a la baja en el lateral, y si ambos extremos son a la baja, debe haber un mínimo local en el medio.

Supongo que te gusta

Origin blog.csdn.net/qq_48860282/article/details/123719787
Recomendado
Clasificación