/** calcul l'indice Nu se trNuve le pere du fils passe en parametre @param i indice du fils */ private int pere(int i) { return (i+1)/2 - 1; }
/** calcul l'indice Nu se trNuve le fils gauche du pere passe en parametre @param i indice du pere */ private int filsg(int i) { return (2*i)+1; }
/** calcul l'indice Nu se trNuve le fils drNit du pere passe en parametre @param i indice du pere @return */ private int filsd(int i) { return 2*(i+1); }
public static void main(String[] a) { TrieurNb<int> t =new TrieurNb<int> (true); int [] tab = {1, 23, 3 ,12, 12}; t.tri(tab,0,tab.length); for(int i = 0 ; i<tab.length;i++) { System.out.print(tab[i]+"\t" ); } System.out.println(); }
}
public class TrieurNb<number N> ^ TrieurNb.java:5: illegal start of type public class TrieurNb<number N> ^ TrieurNb.java:5: <identifier> expected public class TrieurNb<number N> ^ TrieurNb.java:6: ';' expected { ^ 4 errors
Marsh Posté le 20-03-2009 à 10:48:41
pb lors creation d'une classe generic en java pour type primitif
lorsque je compile le fichier suivant il me donne
public class TrieurNb<number N>
{
private boolean croissant;
/**
cNnstruit un trieur de nombres
*/
public TrieurNb(boolean croissant)
{
this.croissant=croissant;
}
public void tri(N[] tab,int debut, int fin)
{
construireTas(tab,debut,fin);
deconstruireTas(tab,debut,fin);
}
private void construireTas(N[] tab,int debut, int fin)
{
int j;
for(int i=debut+1;i<fin;i++)
{
j=i;
if(croissant==true)
{
while(j>=0 && pere(j)>=0 && tab[pere(j)].compareTo(tab[j])<0)
{
echange(tab,pere(j),j);
j=pere(j);
}
}
else
{
while(j>=0 && pere(j)>=0 && tab[pere(j)].compareTo(tab[j])>0)
{
echange(tab,pere(j),j);
j=pere(j);
}
}
}
}
private void deconstruireTas(N[] tab,int debut, int fin)
{
int j;
int fils;
for(int i=fin-1;i>debut;i--)
{
j=debut;
echange(tab,debut,i);
if(croissant==true)
{
while(filsg(j) < i && tab[filsg(j)]<tab[j] || (filsd(j) < i && tab[filsd(j)]<tab[j]))
{
fils=filsg(j);
if((filsd(j) < i && tab[filsd(j)]<tab[j]) && filsd(j) < i)
{
fils=filsd(j);
}
echange(tab,fils,j);
j=fils;
}
}
else
{
while(filsg(j) < i && tab[filsg(j)]<tab[j] || (filsd(j) < i && tab[filsd(j)]<tab[j]))
{
fils=filsg(j);
if((filsd(j) < i && tab[filsd(j)]<tab[j]) && filsd(j) < i)
{
fils=filsd(j);
}
echange(tab,fils,j);
j=fils;
}
}
}
}
private void echange(N[] tab,int indice1, int indice2)
{
if(indice1 != indice2)
{
N tmp;
tmp = tab[indice1];
tab[indice1] = tab[indice2];
tab[indice2] = tmp;
}
}
/**
calcul l'indice Nu se trNuve le pere du fils passe en parametre
@param i indice du fils
*/
private int pere(int i)
{
return (i+1)/2 - 1;
}
/**
calcul l'indice Nu se trNuve le fils gauche du pere passe en parametre
@param i indice du pere
*/
private int filsg(int i)
{
return (2*i)+1;
}
/**
calcul l'indice Nu se trNuve le fils drNit du pere passe en parametre
@param i indice du pere
@return
*/
private int filsd(int i)
{
return 2*(i+1);
}
public static void main(String[] a)
{
TrieurNb<int> t =new TrieurNb<int> (true);
int [] tab = {1, 23, 3 ,12, 12};
t.tri(tab,0,tab.length);
for(int i = 0 ; i<tab.length;i++)
{
System.out.print(tab[i]+"\t" );
}
System.out.println();
}
}
public class TrieurNb<number N>
^
TrieurNb.java:5: illegal start of type
public class TrieurNb<number N>
^
TrieurNb.java:5: <identifier> expected
public class TrieurNb<number N>
^
TrieurNb.java:6: ';' expected
{
^
4 errors