¿Qué es el ordenamiento binario?

La ordenación binaria es un método para ordenar un elemento particular que está en orden aleatorio en la matriz.

La búsqueda binaria se ejecuta en el peor tiempo logarítmico, haciendo comparaciones de O (log n), donde n es el número de elementos en la matriz, el O es la notación O grande y el registro es el logarítmico. La búsqueda binaria ocupa un espacio constante (O (1)), lo que significa que el espacio ocupado por el algoritmo es el mismo para cualquier número de elementos en la matriz. Aunque la estructura de datos especializada diseñada para la búsqueda rápida, como las tablas hash, se puede buscar de manera más eficiente, la búsqueda binaria se aplica a una gama más amplia de problemas.

Aunque la idea es simple, implementar la búsqueda binaria correctamente requiere atención a algunas sutilezas sobre sus condiciones de salida y el cálculo del punto medio.

Existen numerosas variaciones de búsqueda binaria. En particular, la cascada fraccional acelera las búsquedas binarias para el mismo valor en múltiples matrices, resolviendo eficientemente una serie de problemas de búsqueda en geometría y muchos otros campos. La búsqueda exponencial extiende la búsqueda binaria a listas ilimitadas.

Los ordenamientos binarios son una clase de algoritmo en el que el contenido de una estructura de datos (matriz, lista, árbol …) se clasifica por mitades progresivas (o al menos 2 divisiones de la etapa anterior que no son necesariamente de igual tamaño). Con cada comparación sucesiva del elemento que se mueve, una mitad adicional de la mitad actual se elimina de otras comparaciones, hasta que se encuentre la nueva posición para el elemento que se está ordenando.

Como puede imaginar, con una mitad completa (o al menos una división) de la división actual que se descarta en cada comparación, el orden puede ir muy rápidamente.

Esta descripción asume que la estructura a ordenar ya existe, con su contenido aún sin clasificar. También se puede realizar una búsqueda binaria agregando elementos sucesivos en un árbol binario ordenado, donde en cada comparación se agrega el elemento como una nueva hoja o se limita la búsqueda de dónde pertenece al subárbol izquierdo o derecho del subárbol actual comparación. Con el árbol comenzando vacío, nuevamente, esto obviamente puede ir muy rápido.

(Un “tipo de montón” es un caso refinado de esto, donde un montón no es una herramienta de asignación de memoria, sino un árbol binario que cumple condiciones muy particulares).

Digo que puede ir en cada caso porque cada tipo y búsqueda tiene sus peores condiciones. Por ejemplo, si sucede que la secuencia de elementos que se ordenan (o agregan) ya está bastante bien en el orden ordenado, la secuencia de divisiones se inclinará fuertemente a un extremo de la estructura (o al lado del árbol) y la clasificación se se vuelve bastante lineal.

No recuerdo si “clasificación rápida” y “clasificación de torneo” se consideran generalmente tipos binarios. Quicksort va por divisiones binarias de la estructura de datos (es decir, dividiéndola en dos) pero no vuelve a insertar elementos individuales, sino que simplemente cambia los elementos en la división actual para asegurarse de que cada elemento que comienza desde su extremo izquierdo menos que cada elemento comenzando desde su extremo derecho (quicksort lo llama “partición”) luego divide donde se encuentran las particiones y da cada una de las divisiones recursivamente a quicksort Esto resulta para eliminar cargas de comparaciones redundantes, y en todo, pero en el peor de los casos, va increíblemente rápido.

(Pido disculpas a los algoritmos de las personas por usar “muy rápido” y “increíblemente rápido” en lugar de la notación O, pero mi impresión es que la pregunta está en un nivel más general que eso).