Tu peux prendre un "jagged array" (tableau de tableau), où tu ne vas faire ton tri que sur les tab[n][0] et au lieu de copie de valeur, tu copies les références de chaque tableau.
Plus simple encore est de passer par une liste de tableau, et d'utiliser le orderby proposé par Linq (List<int[]> sortedList = originalList.OrderBy(o => o[0]).ToList()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| static void Main(string[] args)
{
int nbrLigne = 2;
List<int[]> originalList = new List<int[]>();
originalList.Add(new int[2] { 25, 15 });
originalList.Add(new int[2] { 60, 25 });
originalList.Add(new int[2] { 45, 15 });
originalList.Add(new int[2] { 85, 84 });
originalList.Add(new int[2] { 32, 60 });
originalList.Add(new int[2] { 15, 90 });
AfficheListe(originalList,nbrLigne);
List<int[]> sortedList = originalList.OrderBy(o => o[0]).ToList();
Console.WriteLine("Tri!");
AfficheListe(sortedList, nbrLigne);
Console.ReadKey();
}
static void AfficheListe(List<int[]> list, int nbrLigne)
{
for (int i = 0; i < nbrLigne; i++)
{
foreach (var tab in list)
{
Console.Write(tab[i] +" ");
}
Console.WriteLine();
}
} |
Bon niveau performance faut trouver plusieurs solutions et faire des benchmarks...Mais bon à moins d'être dans de l'embarqué, ou à trier plusieurs millions d'entrées cette méthode fonctionne ..
Edit: tu peux même trier sur une autre ligne si l'envie t'en chante (et que tu as éventuellement plus de ligne )
List<int[]> sortedList = originalList.OrderBy(o => o[X]).ToList();
Partager