Estoy queriendo ordenar una gran variedad de cadenas (notablemente File.list()
, que no puedo externalizar o reducir más) sin usar [mucha] memoria extra.¿Cómo realizo una ordenación de matriz eficiente en memoria en java?
Arrays.sort()
dice que hace un tipo de fusión, y la wikipedia dice que algunas implementaciones asignan el tamaño de la matriz original para almacenar la salida ordenada. (Esto parece ser compatible con la referencia System.arraycopy
en el método).
¿Existe un algoritmo de clasificación en el lugar que pueda usar y que sea eficiente desde el punto de vista de la memoria?
¿Qué tan complejo es un algoritmo de ordenamiento que desea escribir a mano, y desea que sea estable (lo que significa que elementos de igual valor aparecen en la matriz final en el mismo orden en que parecían comenzar)? No es que realmente puedas notar la diferencia con String a menos que comiences a buscar 'System.identityHashcode' o lo que sea. –