Begrepet leksikografisk rekkefølge er et matematisk begrep kjent under navn: leksikalsk rekkefølge, leksikografisk(al) produkt, alfabetisk rekkefølge eller ordbokrekkefølge.
Denne delen vil dekke emnet leksikografisk rekkefølge, dens definisjon og annen detaljert informasjon. Etter det vil vi lære å bruke begrepet leksikografisk rekkefølge i Java programmeringsspråk .
Definere leksikografisk rekkefølge
Leksikografisk rekkefølge eller leksikografi i matematikk er en generalisering av den alfabetiske sekvensen til ordbøkene til sekvensene til de ordnede symbolene eller elementene i en totalt ordnet liste. Begrepet leksikografisk rekkefølge er motivert av ordet 'leksikon'. Leksikon er settet med ord som brukes på noen av de andre språkene og har en konvensjonell rekkefølge. Dermed er leksikografisk rekkefølge en måte å formalisere ordrekkefølge hvor rekkefølgen på de underliggende symbolene er gitt.
I programmering er leksikografisk rekkefølge populært kjent som Ordbok rekkefølge og brukes til å sortere en strengmatrise, sammenligne to strenger eller sortere matriseelementer. Det blir ganske enkelt å sortere elementer leksikalsk. Det er fordi leksikografisk rekkefølge har flere varianter og generaliseringer der:
- Én variant er anvendelig for sekvenser av forskjellige lengder som før, med tanke på de spesielle elementene, blir lengder av sekvensene sammenlignet.
- Den andre varianten brukes i rekkefølge undersett av et gitt begrenset sett. Det gjør det ved å tilordne en total rekkefølge til det endelige settet. Deretter konverterer det delmengder til økende sekvenser som den leksikografiske rekkefølgen brukes på.
- Generaliseringen refererer til den kartesiske produktsekvensen av delvis bestilte sett, og en slik sekvens er en totalbestilling, hvis og bare hvis hver faktor i det kartesiske produktet er bestilt totalt.
Forstå den formelle forestillingen om leksikografisk orden
- For å forstå den formelle forestillingen om den leksikografiske rekkefølgen:
- Det begynner med et begrenset sett A, som er kjent som alfabetet og er fullstendig sekvensert. Det betyr videre at for a og b (hvilket som helst to symboler som er forskjellige og ikke like) i A, enten a
- Her er ordene til A den endelige sekvensen av symboler fra A og inkluderer ord med lengde 1 som inneholder et enkelt symbol, ord med lengde 2 med to symboler, og for ord med lengde tre er det 3, og så videre. Med hensyn til, inkluderer det også den tomme sekvensen ? har ingen symboler i det hele tatt. Dermed kan den leksikografiske rekkefølgen for det endelige settet A beskrives som:
- Anta, for de to forskjellige verdenene av samme lengde, a=a1en2…enkog b=b1b2…bker gitt. Her avhenger to ords rekkefølge av den alfabetiske rekkefølgen til symbolene i første omgang i, hvor to ord varierer når man teller fra begynnelsen av ordene, dvs. tilfredsstiller betingelsen a Jeg i i rekkefølgen til alfabetet A.
- Hvis to ord har variert i lengde, fyller den vanlige leksikografiske rekkefølgen ordet med kortere lengde med blanke felt på slutten til begge ordene blir like lange, og deretter sammenlignes ordene.
Implementering av leksikografisk i Java
Som diskutert ovenfor kan den leksikografiske rekkefølgen brukes enten for å sammenligne to strenger eller sortere elementene. Her vil vi diskutere begge metodene og implementere hver.
Sortering av elementer i leksikografisk rekkefølge
java print
Ordne ordne i rekkefølge er kjent som leksikografisk rekkefølge eller også kjent som Ordbok rekkefølge . Det betyr at ved bruk av leksikografisk rekkefølge, ordnes ordene alfabetisk i henhold til deres komponentalfabeter. For å sortere en strengmatrise i leksikografisk rekkefølge har vi følgende to metoder:
Metode 1: Bruk en hvilken som helst sorteringsmetode
Nedenfor er eksempelkoden gitt som lar oss forstå hvordan vi kan utføre sortering på elementer i leksikografisk rekkefø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 å utføre utgangen ovenfor, fikk vi utgangen som vises nedenfor:
Sammenligning av to strenger ved hjelp av leksikografisk rekkefølge i Java
For å sammenligne to strenger ved hjelp av leksikografisk rekkefølge, har vi følgende to metoder:
Bruke compareTo () metoden
La oss begynne en etter en:
Bruke compareTo () metoden
Nedenfor er et eksempelimplementering som vi kan sammenligne med strenger 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)>