Dénombrement - C - Programmation
Marsh Posté le 21-06-2009 à 18:09:56
façon simple. si tu sais que tes nombres sont de 1 à 88 (comme ici) il suffit d'utiliser la valeur comme pointeur dans un autre tableau :
p.ex en pseudo code
v[] = {1,1,1,4,4,5,6,7,1,2,4,7,9}
o[13] = {0} // vecteur d'occurence de taille v
pour chaque element dans v[]
o[v[i]]++
voilà je ne sais pas si cette méthode à un nom. Bien sûr cela est peu efficace si tu as peu de nombres dans un interval très grand (consommation de mémoire)
edit:ortho
Marsh Posté le 21-06-2009 à 22:27:52
Merci jagstang mais j'avoue que je n'ai pas tout compris.
Marsh Posté le 21-06-2009 à 23:13:08
rien de compliqué pourtant. tu utilises un second vecteur initialisé à 0. et lorsque tu rencontre un nombre N, tu incrémente l'indice N de ton tableau.
Marsh Posté le 22-06-2009 à 10:13:44
C'est appelé le tri du panier ou du facteur, ne fonctionne évidemment que sur des entiers.
Marsh Posté le 22-06-2009 à 16:33:29
c'est ça. Mais sans trier.
Marsh Posté le 22-06-2009 à 18:27:06
Pas mal du tout comme technique, faudra que je m'en souvienne
Marsh Posté le 22-06-2009 à 22:44:47
jagstang >> ben si on trie quand même, pour obtenir le tableau trié dans le tableau initial, il suffit de parcourir le tableau obtenu à partir du début, si tu rencontre une case à 0 tu passes, sinon tu recopies dans le tableau initial l'index de la case du tableau trié autant de fois que le contenu de cette case.
Marsh Posté le 23-06-2009 à 08:40:01
ReplyMarsh Posté le 23-06-2009 à 09:41:36
Trap D a écrit : jagstang >> ben si on trie quand même, pour obtenir le tableau trié dans le tableau initial, il suffit de parcourir le tableau obtenu à partir du début, si tu rencontre une case à 0 tu passes, sinon tu recopies dans le tableau initial l'index de la case du tableau trié autant de fois que le contenu de cette case. |
sans faire la dernière étape que tu cite, on ne trie pas, on compte simplement les occurences.
Marsh Posté le 23-06-2009 à 18:41:24
jagstang a écrit : |
On veut absolument avoir le dernier mot
Marsh Posté le 23-06-2009 à 20:11:17
sneakz a écrit : Un lien sur le sujet : |
La partie complexité vaut son pesant de WTF
Marsh Posté le 25-06-2009 à 17:37:54
Trap D a écrit : |
Pas vraiment non, c'est la réalité
Marsh Posté le 21-06-2009 à 16:43:57
Bonjour,
Je cherche à dénombrer des valeurs dans un tableau.
Je lis un tableau avec des valeurs numériques 1,1,3,1,45,5,12,36,1,2,45,5,5,12,88 etc. par exemple et je souhaite dans mon programme compter le nombre de 1, de 3, de 5 etc.
Comment procéder ?
Merci pour votre entraide.