Bonjour tout le monde,
j'envisage de trier des entiers dans la mesure où ils sont compris entre 0 et 100 mais je ne sais pas où trouver des indices pour écrire ce code alors si vous avez une petite idée.
Que ce soit le nom d'une instruction ou d'une méthode de tri ce serait sympa...
Comment faire pour stocker en mémoire un chiffre afin qu'il soit comparer à un autre? En gros c'est ça mon problème
Merci de votre aide
# Mon préféré : le "tri par bulles"
Posté par Kibos . Évalué à 1.
http://www-ic2.univ-lemans.fr/~alissali/enseignement/polys/algocuni(...)
[^] # Re: Mon préféré : le "tri par bulles"
Posté par doublehp (site web personnel) . Évalué à 2.
http://www.cs.montana.edu/webworks/webworks-home/links/sorting.html(...)
http://support.microsoft.com/?kbid=169617(...)
http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html(...)
chaque lien a plusieurs listes d algos.
[^] # Re: Mon préféré : le "tri par bulles"
Posté par lampapiertramol (site web personnel) . Évalué à 1.
D'après la même source voici les différents algos de tri: http://c2.com/cgi/wiki?SortingAlgorithms(...)
[^] # Re: Mon préféré : le "tri par bulles"
Posté par doublehp (site web personnel) . Évalué à 1.
[^] # Re: Mon préféré : le "tri par bulles"
Posté par nicodache . Évalué à 1.
par contre, le quick sort, c'est pas la même chose :D
[^] # Re: Mon préféré : le "tri par bulles"
Posté par portninwak . Évalué à 1.
Pour votre information, le quatrième c'est le tri par selection, mais je ne me souviens par contre pas en quoi il consiste.
[^] # Re: Mon préféré : le "tri par bulles"
Posté par Pooly (site web personnel) . Évalué à 2.
[^] # pour la rapidité chapeau
Posté par monteiffel . Évalué à 1.
bref, je comprens rien ça vous dérangerait pas d'expliquer plus en détail svp?
Ps c'est un tableau d'entiers que je veux trier
merci
[^] # Re: pour la rapidité chapeau
Posté par Thomas Douillard . Évalué à 2.
Tu recherches le plus grand élément du tableau, et tu l'échanges avec le premier.
Ensuite tu prend le second plus grand (dans le reste du tableau) et tu l'échanges avec le second, ...
en pseudo code, ca doit donner quelque chose comme ça :
[^] # Re: pour la rapidité chapeau
Posté par Anonyme . Évalué à 2.
On va faire ca en C.
Tout d'abors il y a plusieurs méthodes pour trier des éléments (qu'ils soient entiers ou non, il faut juste qu'ils soient ordonnés, pour des entier, l'ordre, c'est la valeur, mais si c'était des bananes ce serait leur poids par exemple)
Tri à bulle cité plus haut consiste à remonter le plus petit élément au début du tableau. (ou le plus grand selon l'ordre que tu veux)
soit un tableau :
tab = [2|3|8|9|4|5|1]
On cherche le plus petit à partir du début (tab[0] à tab[6]) : 1
1 est à la postion 6.
On l'échange avec 2 :
tmp = tab[0];
tab[0] = tab[6];
tab[6] = tmp;
on obtient tab == [1|3|8|9|4|5|2]
Après on recherche le plus petit à partir du second élément (tab[1] à tab[6]) : 2
on l'échange avec 3
on obtient tab == [1|2|8|9|4|5|3]
tu continue : tab devient à le suite :
[1|2|3|9|4|5|8]
[1|2|3|4|9|5|8]
[1|2|3|4|5|9|8]
[1|2|3|4|5|8|9]
voilà.
Ca c'est la présentation de l'algo, maintenant il faut le présenter sous forme
de language informatique.
Comme tu t'en doute, la procédure est identique pour tout les éléments,
il faut donc utiliser une boucle, qui va réexécuter le même bout de code à
quelques variations près (ici la recher et l'echange de élément).
Ceci nécessite d'ajouter des variables de boucles, qui se modifirons
au fur et à mesure de l'exécution.
int depart = 0 // premier élément à partir duquel on cherche
int dernierPlusPetit // élément le plus petit trouvé lors de la recheche.
int indiceDuDernierPlusPetit // position du denier plus petit trouvé.
int tmp // variable temporaire.
// on s'arrête à TAILLE_TAB - 2 car le tableau sera trié à la fin du tri de
// l'avant dernière variable : on ne tri pas une valeur toute seule
pour i de 0 à TAILLE_TAB - 2 faire
// recherche du plus petit élément
// on commence par initialiser les variables, si besoin
dernierPlusPetit = tab[depart + 1]
indiceDuDernierPlusPetit = depart + 1
pour j de depart à TAILLE_TAB - 1
// on regarde les éléments un a un
si (dernierPlusPetit < tab[j] ) alors
// si on en trouve un plus petit que le dernier petit connu,
// c'est le nouveau dernier plus petit
dernierPlusPetit = tab[j]
indiceDuDernierPlusPetit = j
finsi
// On a le dernier plus petit, reste à le mettre à sa place.
tmp = tab[depart]
tab[depart] = tab[indiceDuDernierPlusPetit]
tab[indiceDuDernierPlusPetit] = tmp
finpour
finpour
Voilà.
Si tu est débutant et si tu as vraiment du mal à comprendre ca je te
conseille de te trouver un bouquin prog pour les nuls ou ce genre la.
Je ne veux pas te décourager, mais la programmation demande
beaucoup d'expérience et de travail, mais ce qui est génial,
c'est que si t'aime ca c'est pas du boulot, c'est du loisir.
[^] # Re: pour la rapidité chapeau
Posté par Anonyme . Évalué à 2.
[^] # Re: pour la rapidité chapeau
Posté par Thomas Douillard . Évalué à 3.
Si mes souvenirs sont bons, le tri bulle c'est plutot une bulle qui "remonte" à partir du fond en remontant à chaque fois le plus petit des deux, genre :
(a voir penché, pour imaginer la bulle qui remonte (blup)
10 5 2 7 9 4 °| 3 12 |° 12>3 => la bulle chope 3
10 5 2 7 9 °| 4 3 |° 12 3<4 => elle remonte 3
10 5 2 7 °| 9 3 |° 4 12 3<9 => idem
10 5 2 °| 7 3 |° 9 4 12 7<3
10 5 °| 2 3 |° 7 9 4 12 => elle chope 2
10 °| 5 2 |° 3 7 9 4 12
°| 10 2 |° 5 3 7 9 4 12
2 10 5 3 7 9 4 12
hop on a remonté le 2, maintenant faut recommencer en prenant une bulle qui remonte plus jusqu'en haut.
L'avantage c'est qu'à chaque passage tu remontes pas seulement le 2 mais t'as aussi remonté pas mal le "3".
Pas en nombre de permutation par contre, mais bon, après faut voir dans des cours d'algos ;)
[^] # Re: pour la rapidité chapeau
Posté par Anonyme . Évalué à 2.
J'avais bien pensé à cet algo aussi, mais ca remonte à mes premiers TD d'algo de DEUG, autant dire que j'ai plus les noms en tête.
Perso, je trouve coup des bulles bien sympathique, il est "mignon" cet algo.
Enfin, vive les algos en n*log(n) comme le heapsort et le quicksort cités plus haut.
Vachement plus intéressant.
[^] # Re: Mon préféré : le "tri par bulles"
Posté par adibou . Évalué à 1.
http://fr.wikipedia.org/wiki/Tri_comptage(...)
# Puisqu'on parle de Java...
Posté par gastounet . Évalué à 1.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html(...)
où l'on trouve une méthode sort pour les tableaux de chaque type de donnée élémentaire.
[^] # Re: Puisqu'on parle de Java...
Posté par gastounet . Évalué à 3.
[^] # Re: Puisqu'on parle de Java...
Posté par monteiffel . Évalué à 1.
merci
[^] # Re: Puisqu'on parle de Java...
Posté par gastounet . Évalué à 3.
Non sérieusement, faudrait quand même accepter de faire un minimum d'efforts par toi même. Encore une fois si tu prétends programmer un minimum dans un langage un peu sérieux quelques rudiments d'anglais sont indispensables. Surtout que l'anglais en question c'est pas du Shakespeare :
Et même si c'est vraiment trop compliqué, Google permet de ne demander que les réponses en français à une recherche, encore faut-il se donner la peine...
[^] # Re: Puisqu'on parle de Java...
Posté par monteiffel . Évalué à 0.
Cependant, si tu ne veux pas perdre de ton temps avec moi, je te laisserais vaquer à tes occupations , c'est sur que d'aider des débutants c'est pitoyable après tout, ils peuvent pas tout savoir eux-mêmes!!!!
je demandais juste le nom correspondant au mot "échanger" en java mais je crois que c'est trop impertinent pour toi, alors à l'avenir si c'est pour fournir des réflexions de ce genre ne perds pas ton temps avec moi, d'autres auront peut être un petit peu plus de pitié
Bonne programmation en tous langages et surtout bonne navigation sur google
[^] # Re: Puisqu'on parle de Java...
Posté par gastounet . Évalué à 3.
Mais bien sûr, que je suis bête ! C'est évidemment ce que j'aurai du comprendre à la lecture de :
excus mais t'aurais pas la même chose en français au sujet de sort?
Je ne préfères pas répondre au reste, vu ce que tu fait des réponses...
J'attends quand même avec impatience le TP de la semaine prochaine. Et en attendant, puisque le cours de ton prof ne semble pas suffire (à moins que tu ne l'ais pas écouté/lu), je te renouvelle le conseil qui t'a été donné par d'autres de t'acheter (ou d'emprunter) un bon bouquin d'initiation à l'algorithmique et/ou à Java.
[^] # algo
Posté par monteiffel . Évalué à 1.
ah , j'avais oublié c'est pas un TP, je suis en train de préparer mon capes de français , alors considère mes exos comme des exos tirés d'un bouquin "java pour les nuls"
tu sais toujours pas quel est le terme en java pour désigner echanger?
si tu le trouves merci, moi de mon côté je cherche
# algorithmes
Posté par Krunch (site web personnel) . Évalué à 5.
http://fr.wikipedia.org/wiki/Algorithme_de_tri(...)
http://www.nist.gov/dads/HTML/sort.html(...)
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: algorithmes
Posté par monteiffel . Évalué à 1.
merci
[^] # Re: algorithmes
Posté par Krunch (site web personnel) . Évalué à 3.
D'un autre côté si le but est de comprendre et implémenter des algorithmes de tri, ça n'a bien sûr aucun intérêt.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # merci ;))
Posté par monteiffel . Évalué à 1.
Pour l'algorithme de tri , je vais utiliser le tri par bulles , faut juste que je gère mes erreurs de syntaxe
merci en tout cas de tes remarques , fait plaisir de voir que j'intéresse
;))
# Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
# En fait, le plus compliqué c'est encore d'avoir des données pas triées
Posté par mac . Évalué à 1.
use Data::Dumper;
# Creer un tableau pas trie
srand;
@new = ();
@old = 1 .. 10;
while (@old)
{
push( @new, splice( @old, rand @old, 1 ) );
}
print Dumper (\@new);
# Trier le tableau
@sorted = sort {$a <=> $b} @new;
print Dumper (\@sorted);
# Bravo :)
Posté par Calim' Héros (site web personnel) . Évalué à 3.
Sinon il y a des info sur les algo de tri, en VF, par la :
http://www.dailly.info/algorithmes-de-tri/(...)
sinon y'a tjs google
[^] # Re: Bravo :)
Posté par monteiffel . Évalué à 2.
cependant au moment où j'éxecute mon code il me reste une erreur
public class Trial
{
public static void main(int tab[])
{
tab= new int[9];
int longueur= tab.length;
boolean inversion;
do
{
inversion= false;
for(int i=0; i< longueur-1; i++)
{
if(tab[i]> tab [i+1])
{
echanger(tab,i,i+1);
inversion=true;
}
}
}
while(inversion);
}
}
désolé pour la balise, mais pas fait exprès
et là il me dit: cannot resolve symbol
symbol: method echnager
C'est sur que " echanger" n'est pas le bon terme mis dans ce cas-là c'est lequel? permut?
merci d'avance
[^] # Re: Bravo :)
Posté par Calim' Héros (site web personnel) . Évalué à 2.
ou alors tu rempalce echanger(tab,i,i+1); par un truc du genre
int tmp;
tmp=tab[i];
tab[i]=tab[i+1];
tab[i+1]=tmp;
[^] # Re: Bravo :)
Posté par Calim' Héros (site web personnel) . Évalué à 2.
http://www.dailly.info/algorithmes-de-tri/echanger.php(...)
la fonction est proposée sur le site que je t'ai filé (que j'ai trouver en même pas 5 min sur google au passage) alors comment dire... c'est un peut exaspérant.
[^] # ben oui, j'avais trouvé!
Posté par monteiffel . Évalué à 1.
peut être as-tu cru que je n''avais pas trouvé parce que j'ai laissé un message à ( je sais plus son nom), mais ce n'est pas le cas, je lui expliquait juste que certaines personnes ne posent pas des questions pour que leur TP ou Td soient faits par les autres;
en tout cas, je vous remercie tous mais là j'ai fini , j'ai trouvé la solution alors c'est bon plus de panic
pour preuve de ma bonne volonté, si vous le souhaitez, je peux vous laisser une méthode de tri pour tableau de string lol
sujet que je ne vous ait jamais parlé!!!!!!!!!!!!!!
ah la la , beaucoup de personnes s'inscrivent pour aider les autres et finalement ne font que les descendre, avez vous tous oublié qu'un jour vous avez été débutant? et qu'on apprend pas forcément une matière parce qu'on ai obligé de le faire à l"école? certaines personnes le font par intérêt, par envie, par découverte et ont du plaisir à faire partager les autres de leurs découvertes
Je vous ferai remarquer également, que certaines personnes se sont contentés de me répondre en me renvoyant à des sites, alors que d'autres ont pensé plus de temps en m'expliquant les choses via un long post.
C'est sur que je demandais des sites en français et merci pour celui que tu m'as donné calimhero, mais d'autres ont été plus expéditifs!!!!
si vous ne souhaitez pas aider les autres, pourquoi vous inscrire sur ce forum? Peut être juste pour poser des questions qui vous intéressent?
On est helper ou on ne l'est pas , alors si un sujet proposé ne vous convient pas vous n'êtes pas obligé d'y répondre, loin de là!!!
Vous pouvez répondre à tous sujet du moment que vous y répondez correctement
salutations à tous
[^] # Re: ben oui, j'avais trouvé!
Posté par Calim' Héros (site web personnel) . Évalué à 2.
Enfin c'est surtout qu'apres etre passé sur le site que je t'ai donné j'ai vue qu'il traitait de cette fonction avant de passer aux algo de tri dans le meme chapitre. j'en ai donc conclus que t'avais pas tout.
Et même si ca ne me dérange pas d'aider les grand débutant a faire une recherche sur google (parce que c'est ce que j'ai fait) j'ai bien qu'on lise ce qui a été donné avant de dire que ca marche pas.
D'ailleurs je t'ai meme donner un bout de code intermediere qui permet de faire ce que fait echanger avant de me rendre compte que tout était sur le site.
[^] # soluce fzait maison avec votre aide à tous
Posté par monteiffel . Évalué à 1.
public class tri
{
public static void main(String[]args)
{
int[]t= new int [args.length];
for(int i=0;i <args.length; i++)
t[i]= Integer.parseInt ( args[i]);
for(int i=0; i<=args.length-2; i++) {
//recherche du min dans [i.. args.length-1]
int Im= i;
for(int j= i+1; j<= args.length-1; j++) {
if( t[j]< t[Im]) { Im= j;}
}
//echange de t[i] avec le min trouvé
int aux = t[i];
t[i]= t[Im];
t[Im]= aux;
}
// affichage
System.out.println ( " tableau trié ");
for'int i=0; i<= args.length-1; i++) {
System.out.println ( t[i]);
}
}
}
voila a+
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.