Termín Lexikografické pořadí je matematický termín známý pod názvy: lexikální pořadí, lexikografický (al) produkt, abecední pořadí nebo slovníkové pořadí.
Tato část se bude věnovat tématu lexikografického pořadí, jeho definici a dalším podrobným informacím. Poté se naučíme, jak používat koncept lexikografického řádu v programovací jazyk Java .
Definování lexikografického řádu
Lexikografický řád nebo lexikografický v matematice je zobecněním abecední sekvence slovníků na sekvence uspořádaných symbolů nebo prvků zcela uspořádaného seznamu. Termín lexikografický řád je motivován slovem „lexikon“. Lexikon je soubor slov používaných v některých jiných jazycích a má konvenční uspořádání. Lexikografický řád je tedy způsob, jak formalizovat slovosled, kde je dáno pořadí základních symbolů.
konverze nfa na dfa
V programování je lexikografický řád populárně známý jako Pořadí slovníku a používá se k řazení pole řetězců, porovnání dvou řetězců nebo k řazení prvků pole. Je docela snadné lexikálně třídit prvky. Je to proto, že lexikografický řád má několik variant a zobecnění, ve kterých:
- Jedna varianta je použitelná pro sekvence různých délek, protože před uvažováním konkrétních prvků se porovnávají délky sekvencí.
- Druhá varianta se používá v řádových podmnožinách dané konečné množiny. Dělá to tak, že konečné množině přiřadí celkový řád. Pak převádí podmnožiny do rostoucích sekvencí, na které je aplikováno lexikografické pořadí.
- Zobecnění se vztahuje na kartézskou posloupnost součinu částečně uspořádaných množin a taková posloupnost je úplným řádem, právě tehdy, když je každý faktor kartézského součinu seřazen úplně.
Porozumění formálnímu pojetí lexikografického řádu
- Abychom porozuměli formálnímu pojmu lexikografického řádu:
- Začíná konečnou množinou A, která je známá jako abeceda a je zcela sekvenována. Dále to znamená, že pro a a b (jakékoli dva symboly, které se liší a nejsou stejné) v A, buď a
- Zde jsou slova A konečnou posloupností symbolů z A a zahrnují slova délky 1 obsahující jeden symbol, slova délky 2 se dvěma symboly a pro slova délky tři je to 3 a tak dále. S pozdravem, zahrnuje také prázdnou sekvenci ? nedrží vůbec žádné symboly. Lexikografické pořadí pro konečnou množinu A lze tedy popsat jako:
- Předpokládejme, že pro dva různé světy stejné délky platí a=a1A2…Aka b=b1b2…bkje dáno. Zde pořadí dvou slov závisí na abecedním pořadí symbolů na prvním místě i, kde se dvě slova liší při počítání od začátku slov, tj. splňují podmínku a i i v pořadí abecedy A.
- Pokud mají dvě slova různou délku, obvyklé lexikografické pořadí doplní slovo s kratší délkou mezerami na konci, dokud se obě slova nestanou stejnou délkou, a pak se slova porovnají.
Implementace lexikografického jazyka v Javě
Jak bylo diskutováno výše, lexikografický řád lze použít buď pro porovnávání dvou řetězců, nebo pro třídění prvků. Zde budeme diskutovat o obou metodách a každou implementujeme.
Řazení prvků v lexikografickém pořadí
Uspořádání slov v pořadí je známé jako lexikografický řád nebo také známý jako Pořadí slovníku . To znamená, že při použití lexikografického pořadí jsou slova řazena abecedně podle jejich dílčích abeced. Pro řazení pole řetězců v lexikografickém pořadí máme následující dvě metody:
Metoda 1: Použití libovolné metody řazení
Níže je uveden příklad kódu, který nám umožní pochopit, jak můžeme provádět třídění prvků v lexikografickém pořadí:
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;>
Po provedení výše uvedeného výstupu jsme dostali níže uvedený výstup:
Porovnání dvou řetězců pomocí Lexikografického pořadí v Javě
Pro porovnání dvou řetězců pomocí lexikografického pořadí máme následující dvě metody:
Použití metody CompareTo ().
java cast string to int
Začněme jeden po druhém:
Použití metody CompareTo ().
Níže je uveden příklad implementace, pomocí které můžeme lexikograficky porovnat řetězce:
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)>