我有一个二维数组,我想根据第一列的内容降序排序,但是我希望该数组保留每一行,并在第一列移动时移动第二列。举个例子;
[2, 5]
[4, 18]
[1, 7]
[9, 3]将被分类为:
[9, 3]
[4, 18]
[2, 5]
[1, 7]谢谢。
发布于 2010-11-12 04:03:42
int[][] d2 = {
{2,5},
{4,18},
{1,7},
{9,3}
};
java.util.Arrays.sort(d2, new java.util.Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return b[0] - a[0];
}
});发布于 2010-11-12 03:58:38
试试这个:
int[][] test = new int[][]{{2,5}, {4,18}, {1,7},{9,3}};
Arrays.sort(test, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o2[0] - o1[0];
}
});我还没有测试过,但它应该可以工作。注意:您可能想要反转减法以更改降序。
发布于 2012-08-29 20:46:23
它只是基数排序。它的C代码如下:
void Rsort(int *a, int n)
{
int i, b[MAX], m = a[0], exp = 1;
for (i = 0; i < n; i++)
{
if (a[i] > m)
m = a[i];
}
while (m / exp > 0)
{
int bucket[10] =
{ 0 };
for (i = 0; i < n; i++)
bucket[a[i] / exp % 10]++;
for (i = 1; i < 10; i++)
bucket[i] += bucket[i - 1];
for (i = n - 1; i >= 0; i--)
b[--bucket[a[i] / exp % 10]] = a[i];
for (i = 0; i < n; i++)
a[i] = b[i];
exp *= 10;
}
}在这里,它对数组中的数字进行操作。编辑代码以获得解决上述问题的代码并不难。这里,数组的每个元素都被认为是该行号的一个数字。
https://stackoverflow.com/questions/4158679
复制相似问题