El problema: Consder los siguientes flotadores []:matriz java para ordenar: forma rápida de obtener una lista ordenada de los índices de una matriz
d[i] = 1.7 -0.3 2.1 0.5
Lo que yo quiero es un array de int [] que representa el orden de la matriz original con índices.
s[i] = 1 3 0 2
d[s[i]] = -0.3 0.5 1.7 2.1
Por supuesto que se podría hacer con un comparador de costumbre, un conjunto ordenado de objetos personalizados, o simplemente ordenar la matriz y luego la búsqueda de los índices de la matriz original (estremecimiento).
Lo que de hecho estoy buscando es el equivalente para el segundo argumento de devolución de Matlab's sort function.
¿Hay una manera fácil de hacerlo (< 5 LOC)? ¿Puede haber una solución que no necesite asignar un nuevo objeto para cada elemento?
Actualización:
Gracias por sus respuestas. Desafortunadamente, nada de lo que se ha propuesto hasta ahora se asemeja a la solución simple y eficiente que estaba esperando. Por lo tanto, abrí un hilo en el foro de comentarios de JDK, proponiendo la adición de una nueva función de biblioteca de clases para abordar el problema. Veamos qué piensa Sun/Oracle sobre el problema.
http://forums.java.net/jive/thread.jspa?threadID=62657&tstart=0
incluso si esto se pone en el JDK, algo que realmente duda de que alguna vez suceda, sería terminar siendo un método de utilidad estática en la clase Arrays (o algo similar) y llegaría a ser implementado muy similar a algo a continuación. Entonces, ¿por qué no puedes escribir la función? – Jherico
¿Cuál es el problema con un comparador personalizado como solución? Es posible que esté malinterpretando el enfoque que esto implica en su mente. – jerryjvl
Tal vez no estoy buscando lo suficiente, pero por lo que sé, no hay forma de usar un Comparador sin encajonar cada elemento en cada llamada al Comparador. Para una matriz de n flotantes que significan 2 * n * log (n) flotantes para el recolector de basura. Con n = 10000 eso significa 80000 pedazos de basura. Preferiría mucho un método de utilidad estático en la clase Arrays. Si no me importara la basura, podría haber usado un TreeMap o algo así en primer lugar. –