Array.Sort() 双二维数组 [重复]

Posted

技术标签:

【中文标题】Array.Sort() 双二维数组 [重复]【英文标题】:Array.Sort() double 2D array [duplicate] 【发布时间】: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()”可以吗?

我是初学者,不胜感激!

非常感谢!

【问题讨论】:

这能回答你的问题吗? How do I sort a two-dimensional (rectangular) array in C#? 我认为这就是你想要的 -> ***.com/a/232465/3902958,根据你的要求。 我不同意,你说的例子不符合我的要求 您是否尝试过上面的示例,但它不起作用?我知道示例不同,但最终结果是相同的。请重试或编辑您的问题。 请理解我是初学者,如果能得到更多帮助,我将不胜感激...... 【参考方案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 个参数。

以上是关于Array.Sort() 双二维数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c#中array.sort()用法

无法使用双指针作为函数参数传递二维数组[重复]

JAVA Array.sort时间排序问题

二维数组是双指针吗? [复制]

二维数组是双指针吗? [复制]

在 C++ 中交换二维双数组