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 Perl Discussion :

trouver la plus grande occurence d'un tableau


Sujet :

Langage Perl

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Points : 82
    Points
    82
    Par défaut trouver la plus grande occurence d'un tableau
    bonjour,

    Je souhaite trouver le nombre pour lequel j'ai le plus grande nombre d'occurrence dans un tableau du style :

    tableau : 8 3 6 8 6 6 6 1 6 6 6 6 5 6 6 6 10 6 6 6 6 7 6 6 5 9 6 6 6 5 6 6 6 6 8 3

    j'attends 6. on pourrait faire ça de façon histogramme mais n'existe-t-il pas une fonction déjà faite pour effectuer ce genre d'opération

    merci,

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Hello,

    je pense que Jedai ou un autre pro de Perl te trouverait rapidement une solution à base de map et/ou de grep mais n'utilisant quasi jamais ces fonctions, j'en serais bon pour réinventer probablement la roue en procédant comme ceci :

    - compter chaque valeur de ton tableau dans un hachage (clé = la valeur du tableau, valeur = le comptage)
    - parcourir via une boucle ton hachage ainsi généré pour connaître le comptage le plus grand
    - re-parcourir ton hash pour afficher en sortie quelles sont les clés dont le comptage est le plus grand

    J'aime assez réinventer la roue parfois et ça donnerait :

    Code : 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
    use strict;
     
    my @tableau = ('8','3','6','8','6','6','6','1','6','6','6','6','5','6','6','6','10','6','6','6','6','7','6','6','5','9','6','6','6','5','6','6','6','6','8','3');
    my %count;
    my $max = 0;
     
    foreach(@tableau)
    {
        ++$count{$_};
    }
     
    foreach(keys %count)
    {
        $max = $count{$_} if ($count{$_} > $max);
    }
     
    print "Nbre d'occurences MAX trouvées = $max\n";
     
    foreach(sort { $a <=> $b}(keys %count))
    {
        print "---> $_ matchée $max fois\n" if ($count{$_} == $max);
    }
    Ce qui donne en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nbre d'occurences MAX trouvées = 24
    ---> 6 matchée 24 fois

  3. #3
    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
    Tout d'abord : ON NE POSTE PAS DANS CE FORUM, on poste dans les sous-forums, comme c'est clairement indiqué en haut de ce forum... Ton prochain message ici sera supprimé sans avertissement (à part un MP), pour celui-ci je me contente de le déplacer dans le sous-forum Langage.

    Maintenant pour ce qui est de ta question, c'est plutôt de l'algorithmique, autant tout faire en une fois (complexité en O(n), constante plutôt faible, c'est le meilleur algorithme que tu peux faire a priori) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
     
    my @tableau = qw(8 3 6 8 6 6 6 1 6 6 6 6 5 6 6 6 10 6 6 6 6 
        7 6 6 5 9 6 6 6 5 6 6 6 6 8 3);
    my %count;
    my ($elem_max, $max) = ($tableau[0], 1);
     
    for my $i (@tableau) {
        ($elem_max, $max) = ($i, $count{$i}) if( ++$count{$i} > $max );
    }
     
    print "---> $elem_max est présent $max fois dans le tableau\n";
    --
    Jedaï

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

Discussions similaires

  1. Trouver le plus grand numero
    Par lepeule dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/12/2006, 14h59
  2. Trouver le plus d'occurences possibles
    Par aimad41 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 09/11/2006, 18h17
  3. [TP] Recherche du 2e plus grand élément d'un tableau...
    Par Dunk dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 02/03/2006, 19h36
  4. [Tableaux] Recuperer le plus grand indice d'un tableau
    Par schnito dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2006, 20h01
  5. Réponses: 3
    Dernier message: 16/12/2002, 16h12

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