Termin Porządek leksykograficzny jest terminem matematycznym znanym pod nazwami: porządek leksykalny, iloczyn leksykograficzny(al), porządek alfabetyczny lub porządek słownikowy.
W tej sekcji omówiony zostanie porządek leksykograficzny, jego definicja i inne szczegółowe informacje. Następnie dowiemy się, jak posługiwać się pojęciem porządku leksykograficznego w języku Język programowania Java .
Definicja porządku leksykograficznego
Porządek leksykograficzny lub leksykograficzny w matematyce to uogólnienie kolejności alfabetycznej słowników na sekwencje uporządkowanych symboli lub elementów całkowicie uporządkowanej listy. Termin porządek leksykograficzny motywowany jest słowem „leksykon”. Leksykon to zbiór słów używanych w niektórych innych językach i ma konwencjonalną kolejność. Zatem porządek leksykograficzny jest sposobem na sformalizowanie porządku słów, w którym podana jest kolejność podstawowych symboli.
zestaw c++
W programowaniu porządek leksykograficzny jest popularnie nazywany Kolejność słownikowa i służy do sortowania tablicy ciągów, porównywania dwóch ciągów lub sortowania elementów tablicy. Sortowanie elementów leksykalnie staje się dość łatwe. Dzieje się tak dlatego, że porządek leksykograficzny ma kilka wariantów i uogólnień, w których:
- Jeden wariant dotyczy ciągów o różnej długości, gdyż przed uwzględnieniem poszczególnych elementów porównywane są długości ciągów.
- Drugi wariant stosuje się w kolejności podzbiorów danego zbioru skończonego. Czyni to poprzez przypisanie całkowitego porządku do skończonego zbioru. Następnie przekształca podzbiory w ciągi rosnące, do których stosuje się porządek leksykograficzny.
- Uogólnienie odnosi się do sekwencji iloczynu kartezjańskiego zbiorów częściowo uporządkowanych, a sekwencja taka jest porządkiem całkowitym wtedy i tylko wtedy, gdy każdy czynnik iloczynu kartezjańskiego jest całkowicie uporządkowany.
Zrozumienie formalnego pojęcia porządku leksykograficznego
- Aby zrozumieć formalne pojęcie porządku leksykograficznego:
- Zaczyna się od skończonego zbioru A, zwanego alfabetem, który jest całkowicie uporządkowany. Oznacza to ponadto, że dla aib (dowolnych dwóch symboli, które są różne i nie są takie same) w A, albo a
- Tutaj słowa A są skończoną sekwencją symboli z A i obejmują słowa o długości 1 zawierające pojedynczy symbol, słowa o długości 2 z dwoma symbolami, a dla słów o długości trzech jest to 3 i tak dalej. Jeśli chodzi o, zawiera również pustą sekwencję? nie posiadających żadnych symboli. Zatem porządek leksykograficzny skończonego zbioru A można opisać jako:
- Załóżmy, że dla dwóch różnych światów o tej samej długości a=a1A2…Aki b=b1B2…Bkjest podawany. Tutaj kolejność dwóch słów zależy przede wszystkim od kolejności alfabetycznej symboli i gdzie dwa słowa różnią się przy liczeniu od początku słów, czyli spełniając warunek a I i w kolejności alfabetu A.
- Jeśli dwa słowa mają różną długość, w zwykłym porządku leksykograficznym do słowa o krótszej długości dodawane są spacje na końcu, aż oba słowa staną się tej samej długości, a następnie słowa są porównywane.
Implementacja leksykografii w Javie
Jak omówiono powyżej, ten porządek leksykograficzny można wykorzystać do porównania dwóch ciągów znaków lub sortowania elementów. Tutaj omówimy obie metody i wdrożymy każdą z nich.
Sortowanie elementów w porządku leksykograficznym
Układanie słów w kolejności nazywa się porządek leksykograficzny lub znany również jako Kolejność słownikowa . Oznacza to, że przy zastosowaniu porządku leksykograficznego słowa ułożone są alfabetycznie, zgodnie z alfabetami składowymi. Do sortowania tablicy ciągów w porządku leksykograficznym mamy dwie następujące metody:
Metoda 1: Zastosowanie dowolnej metody sortowania
gimp, jak odznaczyć
Poniżej znajduje się przykładowy kod, który pozwoli nam zrozumieć, w jaki sposób możemy sortować elementy w porządku leksykograficznym:
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 wykonaniu powyższych danych wyjściowych otrzymaliśmy pokazane poniżej dane wyjściowe:
Porównywanie dwóch ciągów znaków przy użyciu porządku leksykograficznego w Javie
Do porównywania dwóch ciągów znaków w porządku leksykograficznym mamy dwie następujące metody:
Korzystanie z metody CompareTo ().
Zacznijmy jeden po drugim:
Korzystanie z metody CompareTo ().
Wyrażenie regularne Java dla
Poniżej znajduje się przykładowa implementacja, dzięki której możemy porównać leksykograficznie ciągi znaków:
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)>