Je souhaite utiliser l’algorithme de recherche binary pour rechercher la chaîne saisie par l’utilisateur dans un très gros fichier sortingé. Je ne peux pas comparer la chaîne saisie par l’utilisateur avec la chaîne située dans la ligne médiane du fichier pour poursuivre ma recherche binary.
Par exemple, si la chaîne de l’utilisateur est abcda
et que la chaîne du fichier est abcza
, il est évident que la chaîne de l’utilisateur est plus petite que la chaîne du fichier. Comment est-il implémenté dans Java? Ce serait génial si vous pouviez m’aider avec un exemple de code.
Vous pouvez utiliser
str1.compareTo(str2);
Si str1 est lexicographiquement inférieur à str2 , a negative number
sera retourné, 0
si égal ou a positive number
si str1 est plus grand.
Par exemple,
"a".compareTo("b"); // returns a negative number, here -1 "a".compareTo("a"); // returns 0 "b".compareTo("a"); // returns a positive number, here 1
Si vous souhaitez ignorer le cas, vous pouvez utiliser les éléments suivants:
Ssortingng s = "yip"; Ssortingng best = "yodel"; int compare = s.compareToIgnoreCase(best); if(compare < 0){ //-1, --> s is less than best. ( s comes alphabetically first) } else if(compare > 0 ){ // best comes alphabetically first. } else{ // ssortingngs are equal. }
Vous n’avez pas entendu parler de l’interface Comparable
implémentée par Ssortingng
? Si non, essayez d’utiliser
"abcda".compareTo("abcza")
Et cela produira une bonne racine pour une solution à votre problème.