IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Tri d'un tableau


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Tri d'un tableau
    Est-ce qu'il existe, sous Delphi 5, une instruction pour trier un tableau ?
    Merci.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Tu peux trouver ici dans la Faq :http://castelain.developpez.com/sources/TriStringGrid/
    un exemple de code qui trie une StringGrid suivant le contenu d'une de ses colonnes avec QuickSort, c'est facilement modifiable pour trier un tableau.

    En fait c'est quoi ton tableau car si c'est un tableau d'une seule colonne avec du texte c'est plus simple d'utiliser une StringList et sa méthode Sort.

    A+

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pourquoi trier le tableau dans une TStringList alors qu'il est plus facile et simple de faire un Tri directement sur le Tableau

    Ci dessous le code du tri à bulle

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    type TMonType = record
      Id : Integer;
      Chaine : Strings;
    end;
     
    MonTableau : array of TMonType;
     
    // ....
     
    var
      MonTypeTmp : TMonType;
      bSwap : Booelan;
    begin
      // tri du tableau
      bSwap := True;
      While bSwap do
      begin
        bSwap := False;
        for i := low(MonTableau) to high(MonTableau) - 1 do
        begin
          if (MonTableau[i].Id > MonTableau[i + 1].Id) then
          begin
            MonTypeTmp := MonTableau[i];
            MonTableau[i] := MonTableau[i+1];
            MonTableau[i+1] := MonTypeTmp ;
            bSwap := true;
          end;
        end; // for
      end; // while

    A adapter bien sur à ton tableau

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Re-bonjour,

    Pourquoi trier le tableau dans une TStringList alors qu'il est plus facile et simple de faire un Tri directement sur le Tableau
    ... s'il s'agit de chaînes de caratères à trier le tri d'une StringList s'effectue avec une seule instruction : MaStringList.Sort ... donc pas besoin de se casser la tête avec 26 lignes de code. Non ? En plus Sort c'est du QuicK plus rapide que le tri à bulle.

    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Ok
    Merci !!!

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 664
    Points : 25 458
    Points
    25 458
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    En plus Sort c'est du QuicK plus rapide que le tri à bulle
    Bon la transformation de Array vers TStringList puis réciproque, cela prend du temps, ... peut-être remplacé le array définitivement pas une TStringList

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour,

    ... peut-être remplacé le array définitivement pas une TStringList
    ... effectivement ce serait mieux si le contexte permet de le faire
    ... et s'il veut un tri de chaînes plus rapide que le Quick on pourra toujours lui proposer AlphaSort (on en a une version sur le site qui fonctionne avec un array de string ... par contre elle utilise davantage que les 26 lignes de code du tri à bulle).

    A+

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    (on en a une version sur le site qui fonctionne avec un array de string ... par contre elle utilise davantage que les 26 lignes de code du tri à bulle).
    Bein quoi ?? il est bien le tri à bulle, qu'est ce qu'il a mon tri à bulle ?

    Enfin, bon, pour ma part, j'aime bien le tri à bulle, car il est facile à retenir et à écrire
    Puis selon le nombre d'éléments à trier, on a pas besoin de trop se casser la tête avec lui et il est quand même assez rapide ^^

    Sinon, je serais intéressé par le code du QuickSort et AlphaSort (Juste pour voir)

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 664
    Points : 25 458
    Points
    25 458
    Par défaut
    Un petit papier surAlphaSort de Lionel Delafosse, un ancien de mes collègues ... tu as du code, avec des string (il peut être plus performant avec du PChar)

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Re-bonjour,

    Bein quoi ?? il est bien le tri à bulle, qu'est ce qu'il a mon tri à bulle ?
    ... je ne critique pas le tri à bulle car chaque méthode de tri est utilisable dans les conditions où elle excelle.

    Sinon, je serais intéressé par le code du QuickSort et AlphaSort (Juste pour voir)
    1) Pour le QuickSort : voir ici, (FAQ) : http://castelain.developpez.com/sources/TriStringGrid/
    où l'on trouve la procedure QuickSort(...) utilisée pour le tri d'un StringGrid.

    2) Pour AlphaSort : voir ici : http://www.developpez.net/forums/sho...rt#post2784174
    où l'on trouve la Function AlphaSortAOS(...) qui est encapsulée dans la procedure SupprDoublonsAOS(...)
    (pour supprimer les doublons on trie d'abord puis on crée le fichier-destination en ignorant les doublons).

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo