Fonction trier( int tab[])
Résolu
feno
-
feno -
feno -
A voir également:
- Fonction trier( int tab[])
- Fonction si et - Guide
- Excel trier par ordre croissant chiffre - Guide
- Avis sur samsung galaxy tab a9+ - Accueil - Tablettes
- Logiciel pour trier les photos automatiquement - Guide
- Fonction miroir - Guide
8 réponses
1) C'est public static void main(String args[])
2) Le passage par référence void trier(int tab[]) ne permet pas de modifier tab.
Autre exemple :
Pour que ça marche tu dois faire une méthode tab[] trier(int tab[]) en renvoyant le tableau trié en retour, ce qui va te changer pas mal ton code...
2) Le passage par référence void trier(int tab[]) ne permet pas de modifier tab.
Autre exemple :
public static void doubler(int tab[]) { for(int i=0; i<tab.length; i++) { tab[i]=tab[i]*2; } } public static void main(String args[]) { int tab[]={1,2,3,4,5}; doubler(tab); for(int i=0; i<tab.length; i++) System.out.println(tab[i]); // 1 2 3 4 5 (et non 2 4 5 6 8 10) }
Pour que ça marche tu dois faire une méthode tab[] trier(int tab[]) en renvoyant le tableau trié en retour, ce qui va te changer pas mal ton code...
Salut,
Dans ton cas de données comparables tu peux utiliser la classe Arrays:
Et ta méthode trier devient:
Cordialement,
Dan
Dans ton cas de données comparables tu peux utiliser la classe Arrays:
Arrays.sort(tonTableau); // Import java.util.Arrays
Et ta méthode trier devient:
public static void trier(int tab[]) { Arrays.sort(tab); }
Cordialement,
Dan
Salut Dan,
J'ai écris ce message pour vous dire que vous venez de me donner la clé qui me permettra de finaliser mon programme.
Cordialement,
Feno
J'ai écris ce message pour vous dire que vous venez de me donner la clé qui me permettra de finaliser mon programme.
Cordialement,
Feno
bonjour KX,
d'abord j'aimerais te remercier pour ta bonne foie à vouloir apporter ta part de participation au progrès de cette branche qui est l'informatique. Je crois que j'ai mal exposé mon problème au début , mais je souhaite écrire une méthode trie(int tab[]) qui prend en paramètre un tableau tab[] qui est remplir préalablement de façon aléatore, puis qui trie ce tableau et ordonne ces éléments dans l'ordre croissant (par rapport à leur distance à 0).
exemple: tab[]={6,2,4,1,5,2} après le trie par la fonction trie(int tab[]), notre tab[]={1,2,2,4,5,6}.
j'espère que cette fois j'ai exposé mon problème plus simplement lol ;-).
coordialement KX
d'abord j'aimerais te remercier pour ta bonne foie à vouloir apporter ta part de participation au progrès de cette branche qui est l'informatique. Je crois que j'ai mal exposé mon problème au début , mais je souhaite écrire une méthode trie(int tab[]) qui prend en paramètre un tableau tab[] qui est remplir préalablement de façon aléatore, puis qui trie ce tableau et ordonne ces éléments dans l'ordre croissant (par rapport à leur distance à 0).
exemple: tab[]={6,2,4,1,5,2} après le trie par la fonction trie(int tab[]), notre tab[]={1,2,2,4,5,6}.
j'espère que cette fois j'ai exposé mon problème plus simplement lol ;-).
coordialement KX
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai bien compris, mais ce que j'ai dis c'est que tu ne peux pas modifier un int[] passé en paramètre de ta fonction. J'ai mis l'exemple de la fonction doubler parce que c'est une manière simple de voir que le tableau n'est pas modifié au sortie de la fonction.
Il y a plusieurs moyen d'arriver au résultat, ça dépend de ton niveau :
* passer le tableau trié au retour de la fonction, et ainsi faire tab=trie(tab);
* utiliser des objets Integer plutôt que int, ainsi tu pourras avoir un Integer[] tab en paramètre d'entrée et pouvoir le modifier directement (par exemple, ma méthode doubler marcherait si je remplace int[] par Integer[])
* mettre ton tableau comme membre de la classe, auquel cas il faudra enlever le mot clé static et faire des constructeurs et accesseurs au tableau pour le manipuler avec this.
* utiliser directement les méthodes existantes de tris (Collections.sort par exemple)
Il y a plusieurs moyen d'arriver au résultat, ça dépend de ton niveau :
* passer le tableau trié au retour de la fonction, et ainsi faire tab=trie(tab);
* utiliser des objets Integer plutôt que int, ainsi tu pourras avoir un Integer[] tab en paramètre d'entrée et pouvoir le modifier directement (par exemple, ma méthode doubler marcherait si je remplace int[] par Integer[])
* mettre ton tableau comme membre de la classe, auquel cas il faudra enlever le mot clé static et faire des constructeurs et accesseurs au tableau pour le manipuler avec this.
* utiliser directement les méthodes existantes de tris (Collections.sort par exemple)
Je viens de regarder un peu plus attentivement ton code, et j'ai quelques remarques :
1) pour mettre en application la résolution du problème sur les tableaux que j'ai déjà énoncé, on peut tout simplement faire un return tmp; à la place de la dernière boucle for.
2) n est modifié (n++ ou n=taille), on lui applique une jolie boucle while, mais on ne l'utilise jamais ! Autant dire que ta boucle while ne sert à rien... on enlève !
3) m est initialisé à 0 et incrémenté à chaque tour de le boucle for, autant dire qu'on a toujours m==i, on peut donc le remplacer.
4) Avec les modifications faites, voici ce qui reste d'utile dans ta méthode de tri :
Autant dire que ta méthode ne fait rien à part recopier tab dans tmp...
La confiance n'exclut pas le contrôle
1) pour mettre en application la résolution du problème sur les tableaux que j'ai déjà énoncé, on peut tout simplement faire un return tmp; à la place de la dernière boucle for.
2) n est modifié (n++ ou n=taille), on lui applique une jolie boucle while, mais on ne l'utilise jamais ! Autant dire que ta boucle while ne sert à rien... on enlève !
3) m est initialisé à 0 et incrémenté à chaque tour de le boucle for, autant dire qu'on a toujours m==i, on peut donc le remplacer.
4) Avec les modifications faites, voici ce qui reste d'utile dans ta méthode de tri :
public static int[] trier(int tab[]) { int taille=tab.length; int tmp[]=new int[taille]; for(int i=0; i<taille; i++) { tmp[i]=tab[i]; tab[i]=0; } return tmp; }
Autant dire que ta méthode ne fait rien à part recopier tab dans tmp...
La confiance n'exclut pas le contrôle