C# 对包含空元素的交错数组进行排序
我有一个锯齿状数组,声明如下C# 对包含空元素的交错数组进行排序,c#,sorting,jagged-arrays,C#,Sorting,Jagged Arrays,我有一个锯齿状数组,声明如下 int[][][] tmpA = new int[INT_WORKING_SIZE * 2][][]; 我正在尝试使用以下代码对该数组进行排序: Array.Sort(tmpA, 0, INT_WORKING_SIZE*2, new MyArrayComparer()); 我的班级: public int Compare(object x,object y) { if (x == null || y == null)
int[][][] tmpA = new int[INT_WORKING_SIZE * 2][][];
我正在尝试使用以下代码对该数组进行排序:
Array.Sort(tmpA, 0, INT_WORKING_SIZE*2, new MyArrayComparer());
我的班级:
public int Compare(object x,object y)
{
if (x == null || y == null)
return 0;
int[][] arrayA = (int[][])x;
int[][] arrayB = (int[][])y;
int resultA = arrayA[1].Sum();
int resultB = arrayB[1].Sum();
return resultA.CompareTo(resultB);
}
每行交错数组有2个数组,其中包含12个整数
我想通过添加第二个数组的所有12个整数对数组进行排序,最小的应该是第一个
然而,我的主要问题是,对象x,y通常为空,排序后的数组都为零
有什么提示吗?如果我理解正确,您的问题是当其中一个数组为null时返回0,根据哪个数组不是null,您应该返回1或-1,只有当两个数组都为null时才返回0
public int Compare(object x,object y)
{
// changed code
if (x == null && y == null)
return 0;
if (x == null)
return 1;
if (y == null)
return -1;
// end of changed code
int[][] arrayA = (int[][])x;
int[][] arrayB = (int[][])y;
int resultA = arrayA[1].Sum();
int resultB = arrayB[1].Sum();
return resultA.CompareTo(resultB);
}
如果我理解正确,您的问题是当其中一个数组为null时返回0,根据哪个数组不为null,您应该返回1或-1,而只有当两个数组都为null时才返回0
public int Compare(object x,object y)
{
// changed code
if (x == null && y == null)
return 0;
if (x == null)
return 1;
if (y == null)
return -1;
// end of changed code
int[][] arrayA = (int[][])x;
int[][] arrayB = (int[][])y;
int resultA = arrayA[1].Sum();
int resultB = arrayB[1].Sum();
return resultA.CompareTo(resultB);
}
提示-循环、正确的OOP、助手方法、
arrayA[1].Sum()
。您是否已完全初始化tmpA
?我看到你创建了第一个数组。但是这个阵列中的两个12的阵列呢。固定的!杰夫:tmpA是另外两个锯齿阵列的组合。它已初始化。然而,在TMPA数组的中间正好有一个空项。这是否是我在排序后得到所有空值的原因??提示-循环、正确的OOP、帮助器方法、arrayA[1].Sum()
。您是否已经完全初始化了tmpA
?我看到你创建了第一个数组。但是这个阵列中的两个12的阵列呢。固定的!杰夫:tmpA是另外两个锯齿阵列的组合。它已初始化。然而,在TMPA数组的中间正好有一个空项。这是我在排序后得到所有空值的原因吗??