对包含null元素的锯齿状数组进行排序

时间:2010-08-09 09:06:25

标签: 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)
            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通常为空,排序的数组全部为零。

任何提示?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你的问题是,当任何一个数组为null时,你应该返回0,当你应该返回1或-1时,取决于哪个不是null,只有当两者都为null时才返回0。 / p>

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);          
}