比如我有一个二维数组
b d d f
a c d f
a b c d
c d f d
想排列成这样
a b c d 
a c d f 
b d d f
c d f d
也就是说第一列按字母顺序,如果字母有相同的(比如原数组的第2行,和第3行都是两个a),那么就看第二列对应的字母(第2行的第二个字母是c,但第三行的字母是b),所以排序后a b c d 就在a c d f 的前面.
我开始尝试,把第一列看做一个一维数组, 然后起泡排序, 但不知道怎么处理如果出现字母一样时,怎么才能实现比较第二列的字母.
请各位高手给我讲讲思路.谢谢!!

解决方案 »

  1.   

    import java.util.Arrays;
    public class sort
    {
    public static void main(String[] args)
    {
    char[][] a = {{'b', 'd', 'd', 'f'},
      {'a', 'c', 'd', 'f'},
      {'a', 'b', 'c', 'd'},
      {'c', 'd', 'f', 'd'}};
    String[] str = new String[4];
    for(int i = 0; i < 4; i++)
    {
    str[i] = new String(a[i]);
    }
    Arrays.sort(str);
    for(int i = 0; i < 4; i++)
    {
    a[i] = str[i].toCharArray();
    }
    for(int i = 0; i < 4; i++)
    {
    for(int j = 0; j < 4; j++)
    {
    System.out.print(a[i][j] + ", ");
    }
    System.out.print("\n");
    }
    }
    }
      

  2.   

    谢谢gefengxztg(戈峰),但有几个问题还得问一下
    for(int i = 0; i < 4; i++)
    {
    str[i] = new String(a[i]);
    }
    就是把数组a中的每一行当作是字符串数组的一个元素被, 请问如果不用new可不可以,
    Arrays.sort(str);就是把这个字符串数组排列了吧.
    然后在用a[i] = str[i].toCharArray();产生了所求的数组了吧.
    小弟初学,看了你用的方法才知道原来还有这样的方法可以用!
    但不管怎样,多谢了!