Salve a tutti, ho questa matrice
3 1
10 1
30 1
41 1
10 4
21 4
30 4
10 7
10 10
30 10
e ho bisogno di ordinarla rispetto ai valori della prima colonna.
Ciò che dovrei ottenere è questa matrice qui sotto
3 1
10 1
10 4
10 7
10 10
21 4
30 1
30 4
30 10
41 1
Ho scritto questo codice
e quello che ottengo in uscita è questa matricecodice:int[,] id = matrixPlusSort; int[,] idcol = new int[matrixPlusSort.GetLength(0), matrixPlusSort.GetLength(1)]; int a; int b; int d; for (int i = 0; i < matrixPlus.GetLength(0); i++) { a = id[i, 0]; d = id[i, 1]; b = i; int b1 = i; while ((b > 0) && (id[b - 1, 0] > a)) { id[b, 0] = id[b - 1, 0]; b = b - 1; } id[b, 0] = a; idcol[b, 1] = d; idcol[b1, 1] = d; } int[,] id3 = new int[matrixPlusSort.GetLength(0), matrixPlusSort.GetLength(1)]; for (int i = 0; i < matrixPlus.GetLength(0); i++) { id3[i, 0] = id[i, 0]; id3[i, 1] = idcol[i, 1]; }
3 1
10 1
10 4
10 7
10 10
21 4
30 4 * (1)
30 7 * (4)
30 10
41 10* (1)
La prima colonna torna ordinata come voglio io, ma nella seconda colonna, alcuni valori sono sbagliati. Ho segnato con l'asterisco le righe che riportano l'errore sulla seconda colonna e tra parentesi il valore che avrebbe dovuto avere.
Potete aiutarmi a capire dove sto sbagliando?
Grazie mille a tutti!!!

Rispondi quotando