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() 双二维数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章