Trie a insertion recursive en java
Résolu
Mimi
-
osmo -
osmo -
Bonjour,
je suis debutante en Java
je n'arrive pas a trouver le probleme dans mon code !!
svp,aidez moi de trouver l'erreur !!!
merci d'avance
voile mon code :
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();
}
TriInsRec(Tab,taille,2);
}
}
je suis debutante en Java
je n'arrive pas a trouver le probleme dans mon code !!
svp,aidez moi de trouver l'erreur !!!
merci d'avance
voile mon code :
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();
}
TriInsRec(Tab,taille,2);
}
}
2 réponses
-
voila c corrigé:
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);-
-
Pour l'erreur 2, il serait plus logique de rajouter le mot clé static à la méthode TriInsRec, plutôt que de créer un objet bidon pour l'appeler.
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... -
j'ai remplacer l'initialisation de i
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]);
}
} -
-
-
-
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.