Trie a insertion recursive en java
Résolu/Fermé
A voir également:
- Trie a insertion recursive en java
- Trie a insertion recursive en java ✓ - Forum - Java
- Tri par insertion recursive - Conseils pratiques - Pascal
- Tri par insertion langage c - Forum - C
- Tri a bulle recursive python - Conseils pratiques - Pascal
- Algorithme de tri par insertion - Conseils pratiques - Perl
2 réponses
irmeche
19 févr. 2012 à 11:23
- Messages postés
- 71
- Date d'inscription
- jeudi 10 juin 2010
- Statut
- Membre
- Dernière intervention
- 18 juillet 2014
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
19 févr. 2012 à 18:45
- Messages postés
- 71
- Date d'inscription
- jeudi 10 juin 2010
- Statut
- Membre
- Dernière intervention
- 18 juillet 2014
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
19 févr. 2012 à 18:49
- Messages postés
- 16565
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 juillet 2022
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 !!!