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

cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 22 sept. 2016 à 17:07 - Dernière réponse : Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention
- 22 sept. 2016 à 18:32
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



Afficher la suite 

3 réponses

Répondre au sujet
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 22 sept. 2016 à 17:24
0
Utile
Bonjour,
quel VB?
  • VBS
  • VBA
    • Word
    • Excel
    • Access
    • Powerpoint
    • Autre
  • VB6
  • VB.Net
    • Winform
    • WPF

Commenter la réponse de Whismeril
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 22 sept. 2016 à 17:56
0
Utile
VB.NET effectivement, j'aurai pu préciser.
Commenter la réponse de cs_Megafan
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 22 sept. 2016 à 18:32
0
Utile
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()

Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.