Bonjour,

voici mon problème, en fait je dois réaliser la transformée de Burrows Wheeler.
je lis des octets dans un fichier :

par exemple (valeurs entre 0 et 255)
88|84|69|84|69|
je calcule toutes les permutations possible :
88|84|69|84|69|
69|88|84|69|84|
84|69|88|84|69|
69|84|69|88|84|
84|69|84|69|88|

ensuite je dois "trier" la matrice par ordre alphabétique pour obtenir ceci
69|84|69|88|84|
69|88|84|69|84|
84|69|84|69|88|
84|69|88|84|69|
88|84|69|84|69|

ensuite je dois cherche la position dans la matrice triée du groupe d'octets du début
88|84|69|84|69| -> dernière ligne

en fait quand je lis mon groupe d'octets
je transforme ma matrice de byte en tableau de String

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
String[] tab=new String[5];
tab[0]=new String(matrice[0]);
tab[1]=new String(matrice[1]);
...
tab[4]=new String(matrice[4]);
puis j'applique un tri rapide sur ce tableau de String et je repasse ensuite les résultats dans ma matrice en faisant :
matrice[i]=String[i].getBytes();

ça marche donc sur les fichiers texte mais dès que je le fais sur des fichiers binaires ça plante on dirait qu'il n'arrive pas à trier mon tableau de String qui ont d'ailleurs des caractères bizarres (caractères spéciaux du genre tabulation, NULL, ...) vu que les valeurs d'octets vont entre 0 et 255, tout du moins entre -128 et 127 en java.
donc ma question est de savoir si je dois passer par des String pour trier ma matrice de byte dans la façon expliquée plus haut? si non, je vois pas comment faire...j'ai une autre solution qui marche mais qui est très lente...