Задача: Удержать следующие поплавки []:
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)? Может ли быть решение, которому не нужно выделять новый объект для каждого элемента?
Update:
Спасибо за ваши ответы. К сожалению, ни одно из предложенных до сих пор не похоже на простое и эффективное решение, на которое я надеялся. Поэтому я открыл тему в форуме обратной связи JDK, предложив добавить новую функцию класса-библиотеки для решения этой проблемы. Давайте посмотрим, что Sun/Oracle думает о проблеме.
http://forums.java.net/jive/thread.jspa?threadID=62657&tstart=0