2016-02-11 32 views
0

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

+1

为什么不使用HashMap?您可以将第一个数组的元素保留为键,将第二个数组的值保留为其值。排序一个将保持第二个的关联性 – Sachin

回答

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

你可以简单地写两个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; 
     } 
    } 
} 

虽然第二阵列被排序,所述第一阵列中的元素被移动的准确相同的方式,而不管它们的值。

希望这会有所帮助!

相关问题