Classificare una matrice irregolare che contiene elementi null
-
27-09-2019 - |
Domanda
Ho un matrice irregolare dichiarata come
int[][][] tmpA = new int[INT_WORKING_SIZE * 2][][];
I cercando di risolvere questo array con questo codice:
Array.Sort(tmpA, 0, INT_WORKING_SIZE*2, new MyArrayComparer());
e la mia classe:
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);
}
ogni riga della matrice irregolare ha 2 allineamenti con 12 int.
Voglio ordinare l'array con l'aggiunta di tutti i 12 interi della seconda serie e la più piccola dovrebbe essere il primo.
Tuttavia il mio problema principale è che oggetto x, y sono spesso nulli e l'array ordinato ottiene tutti zeri.
qualche consiglio?
Soluzione
Se ho capito bene, il problema è che stai tornando 0 quando una delle matrici è nullo, quando si dovrebbe essere restituendo 1 o -1 a seconda di quale non è nullo, e 0 solo quando entrambi sono nulli.
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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow