Udtrykket leksikografisk rækkefølge er et matematisk udtryk kendt under navne: leksikalsk orden, leksikografisk(al) produkt, alfabetisk rækkefølge eller ordbogsrækkefølge.
Dette afsnit vil dække emnets leksikografiske rækkefølge, dets definition og anden detaljeret information. Derefter vil vi lære at bruge begrebet leksikografisk orden i Java programmeringssprog .
Definition af leksikografisk orden
Leksikografisk rækkefølge eller leksikografi i matematik er en generalisering af ordbøgernes alfabetiske rækkefølge til rækkefølgen af de ordnede symboler eller elementer i en totalt ordnet liste. Begrebet leksikografisk orden er motiveret med ordet 'leksikon'. Leksikon er det sæt af ord, der bruges på nogle af de andre sprog og har en konventionel rækkefølge. Leksikografisk rækkefølge er således en måde at formalisere ordstilling på, hvor rækkefølgen af de underliggende symboler er givet.
I programmering er leksikografisk orden populært kendt som Ordbogsrækkefølge og bruges til at sortere en strengmatrix, sammenligne to strenge eller sortere matrixelementer. Det bliver ret nemt at sortere elementer leksikalsk. Det er fordi leksikografisk orden har flere varianter og generaliseringer, hvor:
- Én variant er anvendelig til sekvenserne af forskellig længde, da før man betragter de særlige elementer, sammenlignes længderne af sekvenserne.
- Den anden variant bruges i rækkefølge-delmængder af et givet endeligt sæt. Det gør det ved at tildele en total rækkefølge til det endelige sæt. Derefter konverterer den delmængder til stigende sekvenser, som den leksikografiske rækkefølge anvendes på.
- Generaliseringen refererer til den kartesiske produktsekvens af delvist bestilte sæt, og en sådan sekvens er en samlet ordre, hvis og kun hvis hver faktor i det kartesiske produkt er bestilt totalt.
Forståelse af det formelle begreb om leksikografisk orden
- For at forstå den formelle forestilling om den leksikografiske rækkefølge:
- Det begynder med et endeligt sæt A, som er kendt som alfabetet og er fuldstændig sekvenseret. Det betyder yderligere, at for a og b (hvilke som helst to symboler, der er forskellige og ikke ens) i A, enten a
- Her er ordene i A den endelige rækkefølge af symboler fra A og inklusiv ord af længde 1 med et enkelt symbol, ord af længde 2 med to symboler, og for ord med længde tre er det 3, og så videre. Med hensyn til, det inkluderer også den tomme sekvens ? uden symboler overhovedet. Den leksikografiske rækkefølge for det endelige sæt A kan således beskrives som:
- Antag, for de to forskellige verdener af samme længde, a=a1-en2…enkog b=b1b2…bker givet. Her afhænger to ords rækkefølge af den alfabetiske rækkefølge af symbolerne i første omgang i, hvor to ord varierer, når man tæller fra begyndelsen af ordene, dvs. opfylder betingelsen a jeg i i rækkefølgen af alfabetet A.
- Hvis to ord har varieret i længden, udfylder den sædvanlige leksikografiske rækkefølge ordet med kortere længde med blanktegn i slutningen, indtil begge ord bliver ens i længden, og derefter sammenlignes ordene.
Implementering af leksikografisk i Java
Som diskuteret ovenfor kan den leksikografiske rækkefølge enten bruges til at sammenligne to strenge eller sortere elementerne. Her vil vi diskutere begge metoder og implementere hver.
Sortering af elementer i leksikografisk rækkefølge
java print
At arrangere ord i rækkefølge er kendt som leksikografisk orden eller også kendt som Ordbogsrækkefølge . Det betyder, at ved anvendelse af leksikografisk rækkefølge, ordnes ordene alfabetisk i henhold til deres komponentalfabeter. Til sortering af en strengmatrix i leksikografisk rækkefølge har vi følgende to metoder:
Metode 1: Anvendelse af enhver sorteringsmetode
Nedenfor er eksempelkoden givet, der vil lade os forstå, hvordan vi kan udføre sortering på elementer i leksikografisk rækkefølge:
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;>
Ved udførelse af ovenstående output fik vi nedenstående viste output:
Sammenligning af to strenge ved hjælp af leksikografisk rækkefølge i Java
For at sammenligne to strenge ved hjælp af leksikografisk rækkefølge har vi følgende to metoder:
Brug af compareTo () metoden
Lad os begynde én efter én:
Brug af compareTo () metoden
Nedenfor er et eksempel på implementering, hvormed vi kan sammenligne med strenge leksikografisk:
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)>