seegongsik
Algoritmos

Cómo funciona la búsqueda en algoritmos

Cuando buscas una palabra en el diccionario, no pasas las páginas una a una desde el principio. Lo abres por la mitad y decides si la palabra está antes o después. Si las cosas están en orden, puedes encontrar lo que buscas mucho más rápido partiendo por la mitad así.

01

De uno en uno desde el principio

La forma más sencilla de buscar es mirar cada elemento desde el principio.
"¿Es este? No. ¿El siguiente? No." Sigues hasta encontrarlo.
Es seguro, pero si el valor está cerca del final, tarda mucho.

2
5
8
11
13
17
21
25
Revisa una casilla a la vez desde el frente. Cuanto más atrás está, más tarda.

Pulsa "buscar de uno en uno" para revisar una casilla cada vez desde el principio. El valor buscado es 13.

Con pocas casillas, no pasa nada.
Pero con miles o decenas de miles, revisar de una en una lleva muchísimo.
Hay una forma mejor, una muy lista que se puede usar cuando las cosas están en orden.

02

Abrir por la mitad

Cuando las cosas están en orden, se hace así: primero abres por la mitad y miras.
Si el valor que buscas es mayor, descartas la mitad de delante; si es menor, descartas la de detrás.
Cada mirada elimina la mitad.

2
5
8
11
13
17
21
25
Compara con el valor del medio, y tira la mitad entera donde no está.

Cada vez que pulsas "mirar la mitad", se descarta entera la mitad donde no puede estar el valor. El valor buscado es 13.

Al descartar la mitad cada vez, lo que queda se reduce muy deprisa.
8 casillas pasan a 4, 4 pasan a 2 y 2 pasan a 1.
Con unas pocas miradas, llegas a una sola casilla.

03

De uno en uno vs a mitades

Pon las dos formas lado a lado y busca el mismo valor.
Buscar de uno en uno exige mirar muchas veces para llegar a un valor cercano al final, mientras que partir a mitades termina en unas pocas miradas.
Misma respuesta, número de pasos muy distinto.

Uno por unolento
2
5
8
11
13
17
21
25
Por mitadesrápido
2
5
8
11
13
17
21
25
Cortar a la mitad encuentra el mismo valor en muchos menos pasos.

Buscando el mismo valor (13), compara los pasos. De uno en uno = lento · a mitades = rápido.

Cuantas más casillas, mayor es la diferencia.
Con mil elementos, de uno en uno puede llevar hasta mil miradas, mientras que a mitades bastan unas diez.
Con muchos datos, esa diferencia es enorme.

04

Por qué primero hay que ordenar

Partir a mitades tiene una condición: las cosas deben estar en orden.
Solo si están ordenadas se cumple que "si es mayor que la mitad, puedes descartar la parte de delante".
Si están revueltas, no se puede descartar la mitad.

2
5
8
11
13
17
21
25
Está en orden. Puedes descartar la mitad según el medio.
Haber ordenado antes es lo que permite buscar rápido aquí.

Partir a mitades solo funciona si está ordenado. En orden → se cumple · revuelto → no se cumple.

Por eso ordenar y buscar van de la mano.
Una vez que has puesto las cosas en fila, buscar sigue siendo rápido desde entonces.
El esfuerzo de ordenar se recompensa una y otra vez.

05

Hasta dónde hemos llegado

Buscar está siempre a nuestro alrededor.
Diccionarios, guías telefónicas, la palabra que escribes en un buscador: detrás, métodos como partir a mitades encuentran la respuesta rápido.
El orden, la ordenación y la búsqueda ya están unidos en una sola línea.

Buscar = sacar lo que quieres, rápido
Uno por uno es lento · en orden, por mitades · mucho más rápido.
Orden
Pasos fijos
Ordenar
Poner en fila
Buscar
Sacar rápido
A partir de la próxima lección iremos más a fondo: cómo medir lo rápido que es un algoritmo.

Orden → ordenación → búsqueda: hasta aquí hemos llegado. Buscar = sacar rápido lo que quieres.

A estas alturas ya ves que los algoritmos no tienen nada de grandioso.
Fijar un orden, ordenar las cosas y buscar con ingenio.
Pequeños trucos que, juntos, consiguen grandes resultados.

En una líneaBuscar es sacar lo que quieres. Mirar de uno en uno es lento, pero si las cosas están en orden, puedes partir a mitades una y otra vez y encontrarlo mucho más rápido. Partir a mitades solo funciona con las cosas ordenadas, así que ordenar y buscar van de la mano, y una vez en fila todo sigue siendo rápido.
← Algoritmos
¿Te fue útil? Apoyar seegongsik