stringtranslate.com

Borrador: Darksort 2


Darksort es un algoritmo de ordenamiento que se presentó por primera vez en un artículo publicado en el International Journal of Soft Computing and Engineering en mayo de 2018 [1] . El algoritmo está diseñado para ordenar valores enteros y tiene una complejidad temporal y espacial de O(n), lo que lo convierte en un algoritmo de ordenamiento lineal.

El algoritmo funciona creando primero una tabla de acceso directo (DAT) que almacena la cantidad de ocurrencias de cada valor único en la matriz de entrada. Luego, la DAT se utiliza para crear una matriz ordenada, que se devuelve como salida del algoritmo.

Utiliza estructuras de datos avanzadas para mejorar la velocidad de ordenación. Es un algoritmo de ordenación de números enteros. Toma una matriz ordenada o no ordenada Array y un número entero Arraysize que describe el tamaño de la matriz, así como el máximo en <maxvariant>.

Algoritmo (en Python)

Clasificación oscura estándar

def  DarksortDat ( Matriz ,  Tamaño de matriz ): máx  =  0 ; para  i  en  el rango ( 0 ,  Arraysize ): si  ( máximo  <  Matriz [ i ]): máx  =  Matriz [ i ] nueva matriz  =  [ 0 ]  *  ( máx + 1 ) para  i  en  el rango ( 0 ,  Arraysize ): newarray [ Matriz [ i ]]  +=  1 cuenta  =  0 para  i  en  el rango ( 0 ,  ( máx  +  1 )): var  =  nueva matriz [ i ] mientras  ( var  >  0 ): Matriz [ count ]  =  i contar  +=  1 var  -=  1 Devolver  matriz

Variante máxima de clasificación oscura

def  DarksortDat < maxvariant > ( Matriz ,  Tamaño de matriz ,  máx ): nueva matriz  =  [ 0 ]  *  ( máx + 1 ) para  i  en  el rango ( 0 ,  Arraysize ): newarray [ Matriz [ i ]]  +=  1 cuenta  =  0 para  i  en  el rango ( 0 ,  ( máx  +  1 )): var  =  nueva matriz [ i ] mientras  ( var  >  0 ): Matriz [ count ]  =  i contar  +=  1 var  -=  1 Devolver  matriz

Darksort tiene varias variantes:

Tabla de acceso directo darksort (darksort original)

El algoritmo darksort original utiliza una tabla de acceso directo (DAT) para almacenar la cantidad de ocurrencias de cada valor único en la matriz de entrada. La DAT se utiliza luego para crear una matriz ordenada.

Clasificación oscura AVL

Esta variante utiliza un árbol AVL para almacenar los datos ordenados, lo que permite realizar operaciones de búsqueda e inserción de manera eficiente. Esta variante tiene la ventaja de poder realizar varias operaciones, como búsquedas e inserciones, en tiempo logarítmico.

Ordenación oscura de montón

Esta variante utiliza un montón para almacenar los datos ordenados, lo que permite recuperarlos en un tiempo casi constante. Esta variante es útil para aplicaciones en las que es necesario recuperar los datos de forma casi constante, como por ejemplo para mostrar anuncios a los clientes.

Estructuras de datos generales

Darksort se puede extender a cualquier estructura de datos que pueda crear e insertar. Esta variante permite que Darksort se extienda a cualquier estructura de datos que admita operaciones de creación e inserción. En general, DarksortDAT es la variante más importante, pero las versiones de la estructura de datos pueden mejorar la complejidad espacial. La complejidad espacial es exactamente el doble del tamaño de la matriz de entrada, así como de los espacios incluidos en la matriz finalarray máxima. La complejidad espacial es grande porque darksort mantiene espacios para los números que faltan en el conjunto de datos en la memoria. [2]

Estructuras de datos generales darksort

def  DarksortGDS ( Matriz ,  Tamaño de matriz ): máx  =  0 ; para  i  en  el rango ( 0 ,  Arraysize ): si  ( máximo  <  Matriz [ i ]): máx  =  Matriz [ i ] nueva matriz  =  [ 0 ]  *  ( máx + 1 ) para  i  en  el rango ( 0 ,  Arraysize ): newarray [ Matriz [ i ]]  +=  1 Crear . GDS  #(AVL o Heap por ejemplo) para  i  en  el rango ( 0 ,  ( máx  +  1 )): var  =  nueva matriz [ i ] mientras  ( var  >  0 ): GDS . insertar ( i ) var  -=  1 devolver  GDS

Darksort es un algoritmo de ordenamiento estable. Se puede cambiar a orden descendente iterando hacia atrás sobre la nueva matriz en el bucle for final.

Complejidad espacial de Darksort

La complejidad espacial de Darksort es O(n), lo que significa que la cantidad de memoria requerida por el algoritmo crece linealmente con el tamaño de la matriz de entrada. Sin embargo, la complejidad espacial se puede mejorar utilizando estructuras de datos como árboles AVL o heaps. [3]

Comparación con otras ordenaciones lineales

Darksort es superior a otros algoritmos de ordenamiento lineal en determinadas circunstancias. Por ejemplo, Darksort es más rápido que el ordenamiento por conteo cuando no hay demasiados espacios vacíos en los datos. Darksort también es más rápido que el ordenamiento por radix cuando el tamaño de las palabras es grande y las claves son muy distintas. [4]

Conclusión

Darksort es un algoritmo de ordenamiento lineal único con un rendimiento superior al de todos los demás algoritmos de ordenamiento lineal en determinadas circunstancias, aunque la complejidad espacial puede ser mayor que en otras. Es un algoritmo de ordenamiento de números enteros.

Referencias

  1. ^ https://www.ijsce.org/wp-content/uploads/papers/v8i2/B3134058218.pdf
  2. ^ https://dragonextech.com/Darksort.pdf
  3. ^ https://dragonextech.com/Darksort.pdf
  4. ^ https://dragonextech.com/Darksort.pdf