Además de la forma nativa de clonar una matriz y luego clasificarla en su lugar, ¿existe un algoritmo y una implementación existente que sea más adecuada para la clasificación no destructiva?
Necesita ordenar una matriz de flotantes en una nueva matriz sin cambiar la fuente. Los resultados de mi búsqueda fueron bastante escasos, ya que la mayor parte de la literatura se centra en reducir los requisitos de memoria con la clasificación en el lugar.
Usar el nativo sorted = [].slice().sort()
funciona bien . Esta pregunta se trata de comprender si hay otras implementaciones de clasificación de rendimiento cuando se eliminan las restricciones de memoria, ya que de todos modos se necesita una nueva matriz.
Hay una sintaxis más simple para ordenar inmutablemente una matriz usando el operador de distribución ES6:
[...array].sort(sortFn)
Como los comentarios han repetido un par de veces:
shuffledArray.slice().sort()
es la forma predeterminada de proceder.Al ver que la motivación para la clasificación no destructiva está relacionada con la escritura de código funcional, y está mirando a Ramda... consulte la biblioteca ImmutableJS de Facebook si aún no lo ha hecho.
En particular, la Seq
. Puede comenzar a almacenar su matriz de flotadores en un Seq
, ordenarlo y asegurarse de que el Seq original permanezca en el orden correcto. Además, utiliza la evaluación perezosa. http://facebook.github.io/immutable-js/docs/#/Seq
http://facebook.github.io/immutable-js/docs/#/Seq/sortBy