日期:2014-05-20  浏览次数:20867 次

数组的排序,取值!!!!
如题 2个数组
 String[]a ={};
 int []b ={};
a[i] 与b[i]的值是一一对应的
如果对b数组升排序 使得a数组对应也随之排序

这怎么做 请教大神!!或者有什么其他方法来使得一一对应的两组数 同时排序改变?

------解决方案--------------------
个人的简单思路。
Java code

String[] a = {"a","b","c","d"};
        int[] b = {3,1,5,2};
        String[] c = new String[b.length];//最终按照对应关系排序后的a数组
        String[] d = new String[b.length];//用来记录对应关系的数组
        //记录对应关系
        for (int i = 0; i < b.length; i++)
        {
            d[i] = b[i]+"-"+a[i];
        }
        //排序
        for (int i = 0; i < b.length-1; ++i)
        {

            for (int j = 0; j < b.length - i - 1; ++j)
            {
                if (b[j] > b[j + 1])
                {
                    int temp = b[j];
                    b[j] = b[j + 1];
                    b[j + 1] = temp;
                }
            }
        }
        //按照对应关系排序a数组
        for (int i = 0; i < b.length; i++)
        {
            for (int j = 0; j < d.length; j++)
            {
                if(b[i] == Integer.parseInt(d[j].split("-")[0]))
                {
                    c[i] = d[j].split("-")[1];
                }
            }
        }
        //显示
        for (int i = 0; i < c.length; i++)
        {
            System.out.println(c[i]);
        }

------解决方案--------------------
a时刻与b同步交换不就行了吗?

排序时如果 b[j]与b[i]交换,则a[j]与a[i]也交换。
------解决方案--------------------
最好自己写个类来专门维护这两个数组。

里面只有int[]
需要取 string[] 的时候 转换一下就好。
------解决方案--------------------
和数据库对某个列的排序是一样的效果。

建议方法。
1)创建数组c,数据来源于数组a, 
2)对c 进行排序
3)根据C的数据,查找其在A里面的位置,并对B相同位置的数据进行交换。
------解决方案--------------------
其实跟一个2维数组排序一样,交换1维的同时,也交换2维的元素
Java code
String[] a = {"c", "a", "b"};
int[] b = {3, 1, 2};
for (int i=0; i<b.length; i++) {
    for (int j=1; j<b.length-i; j++) {
        if (b[j-1] > b[j]) { //交换b的同时,也交换a
            int tmp = b[j];
            b[j] = b[j-1];
            b[j-1] = tmp;

            String s = a[j];
            a[j] = a[j-1];
            a[j-1] = a[j];
        }
    }
    System.out.println(Arrays.toString(b));
    System.out.println(Arrays.toString(a));
}