Le terme ordre lexicographique est un terme mathématique connu sous les noms suivants : ordre lexical, produit lexicographique (al), ordre alphabétique ou ordre du dictionnaire.
Cette section couvrira le sujet de l'ordre lexicographique, sa définition et d'autres informations détaillées. Nous apprendrons ensuite à utiliser la notion d’ordre lexicographique dans le Langage de programmation Java .
Définir l'ordre lexicographique
L'ordre lexicographique ou lexicographique en mathématiques est une généralisation de la séquence alphabétique des dictionnaires aux séquences des symboles ordonnés ou des éléments d'une liste totalement ordonnée. Le terme ordre lexicographique est motivé par le mot « lexique ». Le lexique est l'ensemble des mots utilisés dans certaines des autres langues et a un ordre conventionnel. Ainsi, l’ordre lexicographique est un moyen de formaliser l’ordre des mots où l’ordre des symboles sous-jacents est donné.
tableau de réaction
En programmation, l'ordre lexicographique est communément appelé Ordre du dictionnaire et est utilisé pour trier un tableau de chaînes, comparer deux chaînes ou trier des éléments d'un tableau. Il devient assez simple de trier les éléments lexicalement. C’est parce que l’ordre lexicographique connaît plusieurs variantes et généralisations dans lesquelles :
- Une variante est applicable aux séquences de longueurs différentes car avant de considérer les éléments particuliers, les longueurs des séquences sont comparées.
- La deuxième variante est utilisée pour trier les sous-ensembles d'un ensemble fini donné. Pour ce faire, il attribue un ordre total à l’ensemble fini. Il s'agit ensuite de convertir des sous-ensembles en séquences croissantes auxquelles l'ordre lexicographique est appliqué.
- La généralisation fait référence à la séquence de produits cartésiens d'ensembles partiellement ordonnés, et une telle séquence est un ordre total, si et seulement si chaque facteur du produit cartésien est totalement ordonné.
Comprendre la notion formelle d'ordre lexicographique
- Pour comprendre la notion formelle d’ordre lexicographique :
- Cela commence par un ensemble fini A, connu sous le nom d’alphabet et entièrement séquencé. Cela signifie en outre que pour a et b (deux symboles différents et différents) dans A, soit a
- Ici, les mots de A sont la séquence finie de symboles de A et comprenant des mots de longueur 1 contenant un seul symbole, des mots de longueur 2 avec deux symboles, et pour les mots de longueur trois, c'est 3, et ainsi de suite. En ce qui concerne, cela inclut également la séquence vide ? ne contenant aucun symbole. Ainsi l’ordre lexicographique de l’ensemble fini A peut être décrit comme :
- Supposons que, pour deux mondes différents de même longueur, a=a1un2…unket b = b1b2…bkest donné. Ici, l'ordre de deux mots dépend de l'ordre alphabétique des symboles en premier lieu i où deux mots varient en comptant depuis le début des mots, c'est-à-dire en satisfaisant la condition a je i dans l'ordre de l'alphabet A.
- Si la longueur de deux mots varie, l'ordre lexicographique habituel complète le mot de longueur la plus courte avec des espaces à la fin jusqu'à ce que les deux mots aient la même longueur, puis les mots sont comparés.
Implémentation lexicographique en Java
Comme indiqué ci-dessus, cet ordre lexicographique peut être utilisé soit pour comparer deux chaînes, soit pour trier les éléments. Ici, nous discuterons des deux méthodes et mettrons en œuvre chacune d’elles.
Tri des éléments par ordre lexicographique
Organiser les mots dans l'ordre s'appelle ordre lexicographique ou également connu sous le nom Ordre du dictionnaire . Cela signifie qu'en appliquant l'ordre lexicographique, les mots sont classés par ordre alphabétique selon leurs alphabets composants. Pour trier un tableau de chaînes par ordre lexicographique, nous disposons des deux méthodes suivantes :
Méthode 1 : appliquer n’importe quelle méthode de tri
arp - une commande
Vous trouverez ci-dessous l'exemple de code donné qui nous permettra de comprendre comment effectuer un tri sur les éléments dans l'ordre lexicographique :
public class Main { public static void main(String[] args) { String[] name = { 'John','Remo','Mixy','Julie','Ronny'}; int n = 5; System.out.println('Before Sorting'); for(int i = 0; i <n; i++) { system.out.println(name[i]); } for(int i="0;" < n-1; ++i) for (int j="i" + 1; 0) string temp="name[i];" name[i]="name[j];" name[j]="temp;" system.out.println(' after performing lexicographical order: '); n; pre> <p> <strong>Code Explanation:</strong> </p> <p>In the above code, we have created a class Main within which the main () method is created.</p> <ul> <li>A string has been initialized, holding some values to it, and each word will get printed as per for loop.</li> <li>Then, we have implemented the main logic within another for loop with the help of which we can form the lexicographical order of the words given.</li> <li>Finally, via for loop, the arranged words are printed on the screen.</li> </ul> <p> <strong>On executing the above example code, we got the following output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java.webp" alt="Lexicographical Order Java"> <p>From the output, we can analyze that the given sequence of the words was not in alphabetical order but after applying the lexicographical order code, we can see that every word is sequenced now in alphabetical order.</p> <p> <strong>Method 2: Applying sort () function</strong> </p> <p>The sort () method is available in the Arrays class within the util package.</p> <p>Below is the example code given that will let us understand that how we can perform sorting on elements in Lexicographical order:</p> <pre> import java.io.*; import java.util.Arrays; class Main { public static void printArray(String str[]) { for (String string : str) System.out.print(string + ' '); System.out.println(); } public static void main(String[] args) { String arr[] = {'John','Harry','Emlie','Ronny','Julie','Mary' }; Arrays.sort(arr,String.CASE_INSENSITIVE_ORDER); printArray(arr); } } </pre> <p> <strong>On executing the above output, we got the below-shown output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-2.webp" alt="Lexicographical Order Java"> <h3>Comparing two strings using Lexicographical order in Java</h3> <p>For comparing two strings using Lexicographical order, we have the following two methods:</p> <p> <strong>Using compareTo () method</strong> </p> <p>Let's begin one by one:</p> <p> <strong>Using compareTo () method</strong> </p> <p>Below is an example implementation by which we can compare to strings lexicographically:</p> <pre> import java.lang.*; public class StringExample { public static void main(String[] args) { String str1 = 'String', str2 = 'Comparison'; int get_val = str1.compareTo(str2); if (get_val <0) { system.out.println('str1 is greater than str2'); } else if (get_val="=" 0) equal to less < pre> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a class StringExample where we have implemented the main () method.</li> <li>We have initialized two strings, i.e., str1 and str2.</li> <li>Next, using the compareTo () method, we have compared the strings str1 and str2.</li> <li>After it, if the get_val value is found less than 0, it means str1 is greater than str2.</li> <li>Else if the get_val value is equal to 0, it means both str1 and str2 strings are equal.</li> <li>Else, both the strings str1 is less than str2.</li> </ul> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-3.webp" alt="Lexicographical Order Java"> <p> <strong>By creating a user-defined function</strong> </p> <p>Below we have created a user-defined function using which we can compare two strings lexicographically. The code is as follows:</p> <pre> public class StringExample { public static void main(String[] args) { String firstString = 'Red'; String secondString = 'Red'; String thirdString = 'Green'; String fourthString = 'Yellow'; String fifthString = 'REdGreen'; System.out.println('Comparing two strings lexicographically by user defined function'); System.out.print(' Compairing firstString ('+firstString+') to the secondString ('+secondString+') returns: '); System.out.println(compareString(firstString, secondString)); System.out.print(' Compairing secondString ('+secondString+') to the thirdString ('+thirdString+') returns: '); System.out.println(compareString(secondString, thirdString)); System.out.print(' Compairing thirdString ('+thirdString+') to the fourthString ('+fourthString+') returns: '); System.out.println(compareString(thirdString, fourthString)); System.out.print(' Compairing fourthString ('+fourthString+') to the firstString ('+firstString+') returns: '); System.out.println(compareString(fourthString, firstString)); System.out.print(' Compairing firstString ('+firstString+') to the fifthString ('+fifthString+') returns: '); System.out.println(compareString(firstString, fifthString)); } public static int compareString(String str, String argString) { int lim= Math.min(str.length(), argString.length()); int k=0; while(k<lim) { if(str.charat(k)!="argString.charAt(k))" return (int) str.charat(k)- argstring.charat(k); } k++; str.length() - argstring.length(); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-4.webp" alt="Lexicographical Order Java"> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a Java class where we have initialized five strings.</li> <li>Next, we have compared the first string with the second string, the second to the third-string, and so on..</li> <li>For making the comparison, we have created a user-defined function compareString () whereby comparing the length and each character of the strings, and we got the results.</li> </ul> <p>Therefore, in this way, we can make use of the lexicographical order in Java for performing such tasks.</p> <hr></lim)></pre></0)></pre></n;>
En exécutant la sortie ci-dessus, nous avons obtenu la sortie ci-dessous :
Comparaison de deux chaînes en utilisant l'ordre lexicographique en Java
Pour comparer deux chaînes en utilisant l'ordre lexicographique, nous disposons des deux méthodes suivantes :
Utilisation de la méthode compareTo()
Commençons un par un :
Utilisation de la méthode compareTo()
méthodes Java
Vous trouverez ci-dessous un exemple d'implémentation par lequel nous pouvons comparer lexicographiquement les chaînes :
import java.lang.*; public class StringExample { public static void main(String[] args) { String str1 = 'String', str2 = 'Comparison'; int get_val = str1.compareTo(str2); if (get_val <0) { system.out.println(\'str1 is greater than str2\'); } else if (get_val="=" 0) equal to less < pre> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a class StringExample where we have implemented the main () method.</li> <li>We have initialized two strings, i.e., str1 and str2.</li> <li>Next, using the compareTo () method, we have compared the strings str1 and str2.</li> <li>After it, if the get_val value is found less than 0, it means str1 is greater than str2.</li> <li>Else if the get_val value is equal to 0, it means both str1 and str2 strings are equal.</li> <li>Else, both the strings str1 is less than str2.</li> </ul> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-3.webp" alt="Lexicographical Order Java"> <p> <strong>By creating a user-defined function</strong> </p> <p>Below we have created a user-defined function using which we can compare two strings lexicographically. The code is as follows:</p> <pre> public class StringExample { public static void main(String[] args) { String firstString = 'Red'; String secondString = 'Red'; String thirdString = 'Green'; String fourthString = 'Yellow'; String fifthString = 'REdGreen'; System.out.println('Comparing two strings lexicographically by user defined function'); System.out.print(' Compairing firstString ('+firstString+') to the secondString ('+secondString+') returns: '); System.out.println(compareString(firstString, secondString)); System.out.print(' Compairing secondString ('+secondString+') to the thirdString ('+thirdString+') returns: '); System.out.println(compareString(secondString, thirdString)); System.out.print(' Compairing thirdString ('+thirdString+') to the fourthString ('+fourthString+') returns: '); System.out.println(compareString(thirdString, fourthString)); System.out.print(' Compairing fourthString ('+fourthString+') to the firstString ('+firstString+') returns: '); System.out.println(compareString(fourthString, firstString)); System.out.print(' Compairing firstString ('+firstString+') to the fifthString ('+fifthString+') returns: '); System.out.println(compareString(firstString, fifthString)); } public static int compareString(String str, String argString) { int lim= Math.min(str.length(), argString.length()); int k=0; while(k<lim) { if(str.charat(k)!="argString.charAt(k))" return (int) str.charat(k)- argstring.charat(k); } k++; str.length() - argstring.length(); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-4.webp" alt="Lexicographical Order Java"> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a Java class where we have initialized five strings.</li> <li>Next, we have compared the first string with the second string, the second to the third-string, and so on..</li> <li>For making the comparison, we have created a user-defined function compareString () whereby comparing the length and each character of the strings, and we got the results.</li> </ul> <p>Therefore, in this way, we can make use of the lexicographical order in Java for performing such tasks.</p> <hr></lim)></pre></0)>0)>