Trier un tableau mais en récupérant les index [Résolu]

Signaler
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
-
Messages postés
16004
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2021
-
Bonjour,
Je cherche une méthode RAPIDE de tri d'un tableau sachant que je souhaite récupérer les index des éléments et non pas les éléments triés.
Je m'explique ;
Un Tableau d'entier d'index 0
[101],[102],[103],[101],[102],[101],[103]
Après le tri, je souhaite obtenir un tableau avec les index des valeurs triées
donc pour mon exemple le résultat serait ;
[0],[3],[5],[1],[4],[2],[6]
Le problème est que mon tableau initial peut contenir plus d'un million de valeur, donc je cherche une solution qui me permet d'obtenir cela très rapidement.

Cordialement.
Megafan



3 réponses

Messages postés
16004
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2021
549
Bonjour,
quel VB?
  • VBS
  • VBA
    • Word
    • Excel
    • Access
    • Powerpoint
    • Autre
  • VB6
  • VB.Net
    • Winform
    • WPF

Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
VB.NET effectivement, j'aurai pu préciser.
Messages postés
16004
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2021
549
Linq est ton ami, voici 101 exemples en C# (il existent pleins de traducteurs en ligne)
https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

Adapté à ton cas ça donne
        Dim mesEntiers() As Integer = {101, 102, 103, 101, 102, 101, 103}
        Dim mesIndexTries() As Integer = mesEntiers.Select(Function(x, i) New With {Key .Valeur = x, Key .Index = i}).OrderBy(Function(y) y.Valeur).Select(Function(y) y.Index).ToArray()