Trie a insertion recursive en java
Résolu/Fermé
A voir également:
- Trie a insertion recursive en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Insertion liste déroulante excel - Guide
- Insertion sommaire word - Guide
2 réponses
irmeche
Messages postés
71
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
18 juillet 2014
17
19 févr. 2012 à 11:23
19 févr. 2012 à 11:23
voila c corrigé:
tu as fait deux erreurs:
1- la méthode main s'ecrit
public static void main(String [] args)
et pas
public static void main(String args)
2- la methode main est static donc il faut crée un objet de type TrieSimple pour appeler la methode TriInsRec
new TrieSimple().TriInsRec(Tab, taille, 2);
import java.util.Scanner; public class TrieSimple { int tab[]; int n; void TriInsRec(int tab[], int n, int i) { int x, j; if ((i > 2) && (i <= n)) { j = i; while ((tab[j] < tab[j - 1]) && (j > 1)) { x = tab[j]; tab[j] = tab[j - 1]; tab[j - 1] = x; j--; } TriInsRec(tab, n, i + 1); } } public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.println("Entrez la taille du tableau:\n"); int taille = sc.nextInt(); int[] Tab = new int[taille]; for (int k = 0; k < taille; k++) { System.out.println("A l'emplacement " + k + " du tableau nous avons = "); Tab[k] = sc.nextInt(); } new TrieSimple().TriInsRec(Tab, taille, 2); } }
tu as fait deux erreurs:
1- la méthode main s'ecrit
public static void main(String [] args)
et pas
public static void main(String args)
2- la methode main est static donc il faut crée un objet de type TrieSimple pour appeler la methode TriInsRec
new TrieSimple().TriInsRec(Tab, taille, 2);
irmeche
Messages postés
71
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
18 juillet 2014
17
19 févr. 2012 à 18:45
19 févr. 2012 à 18:45
une remarque pour l'utilisation des méthodes et vatiables static, c'est vrai que cet exemple est bidon mais il faut éviter au maximum l'utilisation des méthodes static, c'est dangereux.
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
19 févr. 2012 à 18:49
19 févr. 2012 à 18:49
"il faut éviter au maximum l'utilisation des méthodes static, c'est dangereux"
Tiens, en voilà une remarque étonnante ! Au contraire, c'est plus sûr d'utiliser une méthode static puisqu'elles sont indépendantes de l'état courant, il n'y a donc pas d'effet de bord.
Tiens, en voilà une remarque étonnante ! Au contraire, c'est plus sûr d'utiliser une méthode static puisqu'elles sont indépendantes de l'état courant, il n'y a donc pas d'effet de bord.
19 févr. 2012 à 18:01
mais lorsque je fait l'affichage le tableau sera representé sans etre trié !!!
Modifié par KX le 19/02/2012 à 18:17
Et si ton tableau est toujours trié à la fin c'est tout simplement parce que ta méthode de tri ne fonctionne pas, cela vient entre autre du fait que tu as une condition if (i>2), alors que ton premier appel tu le fais avec i=2... Cela fonctionnera un peu mieux si ta condition est : (i > 0) && (i < n), en appelant i=1 en premier, sauf pour le premier élément qui n'est pas trié, je te laisse regarder ça...
19 févr. 2012 à 18:33
mais,tjr il y a d'erreur !!! :(
import java.util.Scanner;
public class TrieSimple {
int tab[];
int n;
static void TriInsRec(int tab[], int n, int i) {
int x, j;
if ((i >0) && (i <= n)) {
j = i;
while ((tab[j] < tab[j - 1]) && (j > 1)) {
x = tab[j];
tab[j] = tab[j - 1];
tab[j - 1] = x;
j--;
}
TriInsRec(tab, n, i + 1);
}
}
public static void main(String [] args) {
int j=1;
Scanner sc = new Scanner(System.in);
System.out.println("Entrez la taille du tableau:\n");
int taille = sc.nextInt();
int[] Tab = new int[taille];
for (int k = 0; k < taille; k++) {
System.out.println("T["+k+"]=");
Tab[k] = sc.nextInt();
}
TriInsRec(Tab, taille,j);
for(int k=0;k<taille;k++)
System.out.println("T["+k+"]="+Tab[k]);
}
}
19 févr. 2012 à 18:38
19 févr. 2012 à 19:04
mais tjr ne marche pas !!!