[C#] Ordinamento di una matrice

giovedì 06 giugno 2013 - 11.42

supercavolo Profilo | Newbie

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

codice: 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]; }


e quello che ottengo in uscita è questa matrice

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!!!

0v3rCl0ck Profilo | Guru

Ciao, non sono entrato nel merito del tuo codice, ma su due piedi, mi verrebbe da convertire quella matrice in un oggetto più facile da manipolare con il framework, per poi eventualmente riconvertirlo a matrice in questo modo:

int[,] id = { { 30, 9 }, { 3, 2 }, { 41, 4 }, { 10, 7 } }; List<Tuple<int, int>> tuple = new List<Tuple<int, int>>(); for (int i = 0; i < id.GetLength(0); i++) { tuple.Add(Tuple.Create(id[i, 0], id[i, 1])); } var ordered = tuple.OrderBy(t => t.Item1).ToList(); for (int i = 0; i < ordered.Count; i++) { id[i, 0] = ordered[i].Item1; id[i, 1] = ordered[i].Item2; }

se non hai il problema di avere alte prestazioni, credo possa fare al caso tuo!
-------------------------------------------------------
Michael Denny
Lead Software Developer & Solutions Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5