根据另一个数组的值对数组进行排序

时间:2016-02-11 18:29:43

标签: java sorting

我想对数组进行排序,问题是数组的每个元素在另一个数组中都有某些值 first array = {31,12,88,74,55}第二个数组= {5,2,3,3,5} 在按降序对第二个数组元素进行排序时,必须交换第一个数组中的相应值。 第一个数组= {31,55,74,88,12}第二个数组= {5,5,3,3,2}

2 个答案:

答案 0 :(得分:3)

听起来很难存储一个对象数组,其中每个对象都有两个值。

public class X implements Comparable<X> {
    private int a;
    private int b;

    public X(int a, int b) {
        this.a = a;
        this.b = b;
    }

    public int compareTo(X other) {
        return a - other.a;
    }
}

然后你可以列出这些项目并对它们进行排序。

List<X> items = ... // Fill in the blanks
Collections.sort(items);

答案 1 :(得分:1)

您可以简单地编写两个for循环来对第二个数组进行排序,并同时对第一个数组进行相同的更改。

for (int i = 0; i < array2.length; i++){
    for (int j = 0; j < array2.length; j++){
        if (array2[i] < array2[j] && i < j){
            int temp1 = array1[i];
            int temp2 = array2[i];

            array1[i] = array1[j];
            array2[i] = array2[j];

            array1[j] = temp1;
            array2[j] = temp2;
        }
    }
}

在对第二个数组进行排序时,第一个数组的元素将以完全相同的方式移动,无论它们的值如何。

希望这有帮助!