Сортировка зубчатого массива, который содержит нулевые элементы - PullRequest
1 голос
/ 09 августа 2010

У меня есть неровный массив, объявленный как

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 Ответ

1 голос
/ 09 августа 2010

Если я правильно вас понимаю, ваша проблема в том, что вы возвращаете 0, когда любой из массивов равен нулю, когда вы должны возвращать 1 или -1 в зависимости от того, что не равно нулю, и 0 только тогда, когда оба равны нулю. 1001 *

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);          
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...