Проблема: рассмотрим следующие числа с плавающей запятой[]:
d[i] = 1.7 -0.3 2.1 0.5
Мне нужен массив int[], который представляет порядок исходного массива с индексами.
s[i] = 1 3 0 2
d[s[i]] = -0.3 0.5 1.7 2.1
Конечно, это можно сделать с помощью собственного компаратора, отсортированного набора пользовательских объектов или просто отсортировав массив, а затем отыскав индексы в исходном массиве (содрогаясь).
На самом деле я ищу эквивалент второго возвращаемого аргумента функция сортировки Matlab.
Есть ли простой способ сделать это (‹5 LOC)? Может ли быть решение, при котором не нужно выделять новый объект для каждого элемента?
Обновлять:
Спасибо за ваши ответы. К сожалению, ничто из того, что было предложено до сих пор, не похоже на простое и эффективное решение, на которое я надеялся. Поэтому я открыл ветку на форуме обратной связи JDK, предлагая добавить новую функцию библиотеки классов для решения этой проблемы. Посмотрим, что Sun/Oracle думает по этому поводу.
http://forums.java.net/jive/thread.jspa?threadID=62657&tstart=0