比如我有一个二维数组
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 的前面.
我开始尝试,把第一列看做一个一维数组, 然后起泡排序, 但不知道怎么处理如果出现字母一样时,怎么才能实现比较第二列的字母.
请各位高手给我讲讲思路.谢谢!!
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 的前面.
我开始尝试,把第一列看做一个一维数组, 然后起泡排序, 但不知道怎么处理如果出现字母一样时,怎么才能实现比较第二列的字母.
请各位高手给我讲讲思路.谢谢!!
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");
}
}
}
for(int i = 0; i < 4; i++)
{
str[i] = new String(a[i]);
}
就是把数组a中的每一行当作是字符串数组的一个元素被, 请问如果不用new可不可以,
Arrays.sort(str);就是把这个字符串数组排列了吧.
然后在用a[i] = str[i].toCharArray();产生了所求的数组了吧.
小弟初学,看了你用的方法才知道原来还有这样的方法可以用!
但不管怎样,多谢了!