【问题标题】:Array.Sort() double 2D array [duplicate]Array.Sort() 双二维数组 [重复]
【发布时间】:2020-04-12 22:51:02
【问题描述】:

我有一个双二维数组:

a[0,0]=1.1      a[0,1]=0.1      a[0,2]=2.9      a[0,3]=1.6 
a[1,0]=-2.2     a[1,1]=-1.7     a[1,2]=0.3      a[1,3]=-0.4 
a[2,0]=2.0      a[2,1]=-0.1     a[2,2]=-1.8     a[2,3]=-3.1

1) 我想按降序排序并保存 2 个索引(以便知道哪些数组索引具有绝对更高/更低的值):

a[2,3]=-3.1
a[0,2]=2.9
a[1,0]=-2.2
a[2,0]=2.0
a[2,2]=-1.8
a[1,1]=-1.7
a[0,3]=1.6
a[0,0]=1.1
a[1,3]=-0.4
a[1,2]=0.3
a[0,1]=0.1
a[2,1]=-0.1

2)我还需要不同的排序:在第一个索引上并保存第二个索引:

a[0,2]=2.9
a[0,3]=1.6
a[0,0]=1.1
a[0,1]=0.1

a[1,0]=-2.2
a[1,1]=-1.7
a[1,3]=-0.4
a[1,2]=0.3

a[2,3]=-3.1
a[2,0]=2.0
a[2,2]=-1.8
a[2,1]=-0.1

我不知道我是否是个白痴 :-) 但我试图理解 Microsoft“Array.Sort()”函数变体以解决这些问题,但没有成功。

“Array.Sort()”可以吗?

我是初学者,不胜感激!

非常感谢!

【问题讨论】:

  • 我认为这就是你想要的 -> stackoverflow.com/a/232465/3902958,根据你的要求。
  • 我不同意,你说的例子不符合我的要求
  • 您是否尝试过上面的示例,但它不起作用?我知道示例不同,但最终结果是相同的。请重试或编辑您的问题。
  • 请理解我是初学者,如果能得到更多帮助,我将不胜感激......

标签: c# sorting


【解决方案1】:

您可以将二维数组复制到一维数组。然后对一维数组进行排序并重新复制到二维数组。

double[,] a = new double[3, 4];
a[0, 0] = 1.1; a[0, 1] = 0.1; a[0, 2] = 2.9; a[0, 3] = 1.6;
a[1, 0] = -2.2; a[1, 1] = -1.7; a[1, 2] = 0.3; a[1, 3] = -0.4;
a[2, 0] = 2.0; a[2, 1] = -0.1; a[2, 2] = -1.8; a[2, 3] = -3.1;
double[] oneD = new double[a.Length];
int t = 0;
for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 4; j++)
    {
        oneD[t] = a[i, j];
        t++;
    }
}
Array.Sort(oneD);
oneD = oneD.Reverse().ToArray();
t = 0;
for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 4; j++)
    {
        a[i, j] = oneD[t];
        t++;
    }
}

【讨论】:

  • 谢谢,但编译错误(第 22 行,第 10 列):方法 'Reverse' 没有重载需要 0 个参数。
猜你喜欢
  • 2013-01-08
  • 2017-09-20
  • 2014-04-30
  • 2019-06-23
  • 2021-11-12
  • 1970-01-01
  • 2011-11-27
相关资源
最近更新 更多