Sorting a jagged array which contains null elements
-
27-09-2019 - |
Question
I have a jagged array declared like
int[][][] tmpA = new int[INT_WORKING_SIZE * 2][][];
I trying to sort this array with this code:
Array.Sort(tmpA, 0, INT_WORKING_SIZE*2, new MyArrayComparer());
and my class:
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);
}
each row of jagged array has 2 arrays with 12 ints.
I want to sort the array by adding all the 12 ints of the second array and the smallest should be first.
However my major problem is that object x,y are often nulls and the sorted array gets all zeros.
any tips?
Solution
If I understand you correctly, your problem is you're returning 0 when either of the arrays is null, when you should be returning 1 or -1 depending on which is not null, and 0 only when both are null.
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);
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow