首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对二维数组进行排序

对二维数组进行排序
EN

Stack Overflow用户
提问于 2010-11-12 03:53:38
回答 4查看 10.2K关注 0票数 3

我有一个二维数组,我想根据第一列的内容降序排序,但是我希望该数组保留每一行,并在第一列移动时移动第二列。举个例子;

代码语言:javascript
复制
[2, 5]
[4, 18]
[1, 7]
[9, 3]

将被分类为:

代码语言:javascript
复制
[9, 3]
[4, 18]
[2, 5]
[1, 7]

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-12 04:03:42

代码语言:javascript
复制
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];
    }
});
票数 2
EN

Stack Overflow用户

发布于 2010-11-12 03:58:38

试试这个:

代码语言:javascript
复制
    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];
        }
    });

我还没有测试过,但它应该可以工作。注意:您可能想要反转减法以更改降序。

票数 4
EN

Stack Overflow用户

发布于 2012-08-29 20:46:23

它只是基数排序。它的C代码如下:

代码语言:javascript
复制
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;
 }
}

在这里,它对数组中的数字进行操作。编辑代码以获得解决上述问题的代码并不难。这里,数组的每个元素都被认为是该行号的一个数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4158679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档