bsort: A theoretically efficient non-comparison-based sorting algorithm for integer and floating-point numbers

El artículo presenta bsort, un algoritmo de ordenamiento no basado en comparaciones para enteros y números de punto flotante que unifica estos casos mediante una derivación del quicksort binario, logrando un tiempo de ejecución asintótico de O(wn)O(wn) y un espacio auxiliar de O(w)O(w), con un rendimiento competitivo en datos de tamaño de palabra pequeño.

Benjamín Guzmán

Publicado Wed, 11 Ma
📖 5 min de lectura🧠 Análisis profundo

Each language version is independently generated for its own context, not a direct translation.

¡Hola! Imagina que tienes que organizar una biblioteca gigante llena de libros. La forma tradicional de hacerlo (como lo hacen la mayoría de los ordenadores hoy en día) es tomar dos libros, compararlos uno por uno ("¿Este es más antiguo que aquel?") y decidir dónde ponerlos. Es como si un bibliotecario muy estricto revisara cada par de libros una y otra vez. Esto funciona bien, pero si tienes millones de libros, tardará mucho tiempo.

El artículo que me has pasado presenta una nueva idea llamada bsort. En lugar de comparar libros uno por uno, bsort es como un sistema de clasificación mágico que mira directamente a los "códigos de barras" (los bits) de cada libro para ordenarlos de golpe.

Aquí te explico cómo funciona, usando analogías sencillas:

1. El Problema: Los números con signo y los decimales

Los ordenadores guardan los números de dos formas principales:

  • Enteros: Números como 5, -10, 100.
  • Decimales (Flotantes): Números como 3.14, -2.5.

El problema es que los ordenadores guardan los números negativos y los decimales de una manera un poco "trampa" en su memoria. Si intentas ordenarlos mirando solo sus códigos de barras (bits) de izquierda a derecha, los negativos podrían salir al final en lugar de al principio, o los decimales se mezclarían. Es como si en tu biblioteca, los libros con portadas rojas (negativos) se mezclaran con los azules (positivos) y el sistema de clasificación se volviera loco.

2. La Solución: bsort (El Gran Ordenador de Bits)

El autor, Benjamín Guzmán, creó bsort. Imagina que bsort es un robot muy rápido que tiene una regla simple: "No preguntes si A es mayor que B. Solo mira el primer dígito de su código secreto".

Funciona en tres pasos, como si fueras a separar una pila de cartas:

Paso A: Separar por "Color" (El Signo)

Primero, el robot mira el primer bit (el más importante).

  • Si es un número negativo, su código empieza con un "1".
  • Si es positivo, empieza con un "0".
  • El truco: Como los negativos deberían ir primero, el robot invierte la regla para el primer paso. Pone todos los que empiezan por "1" (negativos) en una pila y los que empiezan por "0" (positivos) en otra. ¡Listo! Ya separaste los "malos" de los "buenos".

Paso B: Separar por "Tamaño" (El Exponente)

Ahora, dentro de la pila de negativos y la de positivos, el robot mira el siguiente grupo de bits. Esto es como mirar el tamaño del libro.

  • Para los positivos, los libros más "grandes" (exponente mayor) van al final.
  • Para los negativos, ¡cuidado! Un número negativo con un exponente "grande" (en valor absoluto) es en realidad un número más pequeño (ej: -100 es menor que -1). Así que el robot invierte la regla aquí también para que los negativos más grandes queden al principio de su pila.

Paso C: Separar por "Detalle" (La Mantisa)

Finalmente, si dos libros tienen el mismo color y el mismo tamaño, el robot mira los últimos bits (los detalles finos). Aquí es fácil: simplemente los ordena de menor a mayor, como si fueran números normales sin signo.

3. ¿Por qué es tan rápido? (La Teoría)

Imagina que tienes que ordenar 1 millón de libros.

  • El método antiguo (Comparación): Tendría que comparar libros millones de veces. Es como si tuvieras que preguntar a cada persona en una fila: "¿Eres más alto que el de al lado?".
  • bsort: Solo pasa por la fila una vez por cada dígito del código. Si el código tiene 8 dígitos (como en un byte), pasa 8 veces. Si tiene 64 dígitos, pasa 64 veces.
  • La ventaja: Si los números son pequeños (como 8 bits), bsort es extremadamente rápido, mucho más que los métodos tradicionales. Es como tener un escáner que lee todos los códigos de una vez.

4. La Realidad: ¿Es perfecto?

Aquí viene la parte divertida y honesta del artículo. Aunque bsort es teóricamente genial y muy rápido para números pequeños (como los bytes de 8 bits), tiene un pequeño defecto cuando los números son muy grandes (como los de 64 bits que usan los ordenadores modernos).

  • El problema de la recursión: bsort es como un robot que nunca descansa. Para ordenar un número de 64 bits, tiene que hacer 64 pasadas completas por toda la lista de datos.
  • La comparación: Los métodos modernos (como Introsort que usa C++) son más inteligentes: si la lista se hace pequeña, cambian de estrategia y usan un método más rápido y menos cansado.
  • El resultado: bsort es un atleta de maratón que corre siempre al mismo ritmo. Para distancias cortas (números pequeños), es el rey. Pero para distancias largas (números gigantes), se cansa un poco más que los métodos híbridos porque hace demasiados "viajes" por la memoria del ordenador, lo que le hace perder tiempo en el camino.

En resumen

bsort es una nueva forma de ordenar números que es muy eficiente y ahorra memoria.

  • Lo bueno: Es increíblemente rápido para números pequeños y decimales, y no necesita mucha memoria extra.
  • Lo malo: Para números muy grandes, sigue siendo un poco torpe porque no se adapta tan bien como los métodos modernos que combinan varias técnicas.

El autor concluye que, aunque hoy en día los métodos híbridos son los reyes en los ordenadores modernos, bsort tiene un potencial enorme. Si en el futuro los ordenadores se vuelven más rápidos o si se mejora el algoritmo para que sea más "inteligente" (híbrido), podría convertirse en la mejor herramienta para ordenar datos en el mundo.

Es como descubrir un nuevo tipo de motor para un coche: es muy eficiente en ciudad, pero en autopista aún necesita un poco de ajuste para competir con los modelos de lujo actuales. ¡Pero es un gran avance!