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

Algorithmes et structures de données Discussion :

Tri et gestion de doublons


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Tri et gestion de doublons
    Salut,

    J'hésite entre deux méthodes pour implémenter l'ajout, le tri et la suppression des doublons dans une matrice d'entiers. En fait je me demande laquelle est la plus performante en terme de rapidité (la mémoire n'est pas un problème vu le nombre d'éléments).

    Méthode 1 :

    Ajout de tous les éléments dans l'ordre où je les récupère, puis tri de la liste avec suppression des doublons.

    Méthode 2 :

    Tri et gestion des doublons au fur et à mesure de l'ajout d'éléments.


    De plus je me demande quelle méthode de tri utiliser sachant que dans la plupart des cas je récupère une partie des éléments déjà triés.
    Par exemple, je peux récupérer,
    101 ; 102 ; 103 ; 104 ; 105
    puis :
    201 ; 202 ; 203 ; 204 ; 205
    et enfin :
    131 ; 132 ; 133 ; 134 ; 135

    Je pense que le MergeSort serait bien indiqué dans ce cas puisqu'il fusionne des listes déjà triés mais j'aimerai bien une confirmation.

    Voilà, si vous avez des idées, réponses ou pistes sur mes différentes questions.

    Merci d'avance
    Ygster

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu parles de matrices, mais j'ai plutôt l'impression que tu penses à des vecteurs ou même des listes ?

    Une méthode particulièrement rapide pour gérer l'insertion d'un élément en maintenant la structure triée est d'utiliser un arbre binaire de recherche, ou éventuellement une de ses variantes équilibrées (arbre rouge-noir par exemple). Reste à voir dans quel langage tu travailles, dans quel cadre (est-ce le but de l'exercice ou peux tu employer une librairie toute faite par exemple), ...

    --
    Jedaï

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    je pense également que tu as l'air de plutôt parler de vecteurs que de matrices.

    En ce cas, il serait extremement utile de faire un tas. La maintenance du tas est en log(n), ce qui est avantageux et ça te permettra à tout moment de trier ton tableau.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Les arbres rouge-noir sont néanmoins plus avantageux si tu veux avoir accès à ta liste triée en permanence, et le coût de l'insertion est en O(log n) également. Avec un tas, il t'en coûtera O(log n) à l'insertion, mais O(n log n) pour reconstituer le tableau trié à chaque fois que tu en auras besoin. (par contre les tas sont un peu plus facile à implémenter)

    --
    Jedaï

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Qu'est ce qui vous fait dire que je parle plutôt de liste que de matrice ? Pour l'instant en tout cas c'est bien codé sous la forme d'une matrice dynamique de x lignes et 3 colonnes dans mon programme.

    Une méthode particulièrement rapide pour gérer l'insertion d'un élément en maintenant la structure triée est d'utiliser un arbre binaire de recherche, ou éventuellement une de ses variantes équilibrées (arbre rouge-noir par exemple). Reste à voir dans quel langage tu travailles, dans quel cadre (est-ce le but de l'exercice ou peux tu employer une librairie toute faite par exemple), ...
    En fait dans la suite de mon programme je ne vais pas du tout utiliser le fait que le tableau soit trié à part pour l'affichage final (aucune recherche) donc je ne pense pas que l'arbre binaire de recherche soit vraiment utile. C'est pour ça que j'ai choisi une matrice.

    Au niveau des contraintes je n'en ai quasiment aucune à part le langage (Delphi), c'est dans le cadre de mon job mais je peux installer à peu près ce que je veux.

    En ce cas, il serait extremement utile de faire un tas. La maintenance du tas est en log(n), ce qui est avantageux et ça te permettra à tout moment de trier ton tableau.
    Je viens de relire les articles de Wikipédia sur les tas et le tri par tas et je ne vois pas bien en quoi ça serait plus utile qu'un ABR dans mon cas.

    En fait dans les solutions que vous proposez tous les 2, j'ai l'impression que ça va "compliquer" le parcours final pour l'affichage (avec la matrice il suffirait de faire un parcours séquenciel) mais je me trompe peut-être ?

    Merci
    Ygster

Discussions similaires

  1. [XL-2013] Tri de données / Tableau Croisé Dynamique / Gestions des Doublons.
    Par arnachronox dans le forum Excel
    Réponses: 5
    Dernier message: 29/12/2014, 13h41
  2. Gestion des doublons et dlookup
    Par bestall666 dans le forum Access
    Réponses: 5
    Dernier message: 14/02/2007, 23h01
  3. Gestion de doublon dans un champ
    Par edonis dans le forum Access
    Réponses: 6
    Dernier message: 10/09/2006, 21h33
  4. Problème de gestion de doublons
    Par EJ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2006, 19h35
  5. [Débutant] [JComboBox] Gestion de doublons
    Par nounetmasque dans le forum Composants
    Réponses: 2
    Dernier message: 04/05/2005, 15h08

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