将数组从索引转换为值排序

时间:2014-01-09 14:21:58

标签: java arrays sorting

我有一个int[] values,每次都有不同的数字大小。它的形式是这样的:

Index: 1 2 3 4 5
Value: 3 5 1 2 4 

我想转换此数组并返回一个按值排序的新int[]

Index: 3 4 1 5 2
Value: 1 2 3 4 5 

换句话说,我想更改排序并返回按值排序的新int[],而不是索引。 我怎样才能做到这一点 ?

指示按值排序的索引的一维数组可以完成工作,例如,如果int []值类似于400 500 232 123 999,则new int []将是 3 2 0 1 4

2 个答案:

答案 0 :(得分:4)

Arrays.sort(values);

有关详细信息,请参阅the documentation

如果要将值复制到新数组并对该数组进行排序,有几种方法可以做到,这应该足够了:

int[] sortedValues = new int[values.length];
System.arraycopy( values, 0, sortedValues, 0, values.length );
Arrays.sort(sortedValues);

答案 1 :(得分:0)

int size=values.length;
    int [] SortedbyValue=new int [size];
    for(int i=0;i<size;i++){
        SortedbyValue[values[i]]=i;
    }
    return SortedbyValue;

这就是我想出的答案......以上并没有多大帮助。