Термін «лексикографічний порядок» — це математичний термін, відомий під іменами: лексичний порядок, лексикографічний (інший) продукт, алфавітний порядок або порядок словника.
Цей розділ охоплює лексикографічний порядок теми, її визначення та іншу детальну інформацію. Після цього ми навчимося використовувати поняття лексикографічного порядку в Мова програмування Java .
Визначення лексикографічного порядку
Лексикографічний порядок або лексикографічний у математиці — це узагальнення алфавітної послідовності словників до послідовностей упорядкованих символів або елементів повністю впорядкованого списку. Термін лексикографічний порядок мотивується словом «лексика». Лексикон — це набір слів, які використовуються в деяких інших мовах і мають традиційний порядок. Таким чином, лексикографічний порядок - це спосіб формалізації порядку слів, де задано порядок основних символів.
У програмуванні лексикографічний порядок широко відомий як Порядок словника і використовується для сортування масиву рядків, порівняння двох рядків або сортування елементів масиву. Лексично сортувати елементи стає досить легко. Це тому, що лексикографічний порядок має кілька варіантів і узагальнень, в яких:
- Один варіант застосовний до послідовностей різної довжини, оскільки перед розглядом окремих елементів довжини послідовностей порівнюються.
- Другий варіант використовується в упорядкованих підмножинах заданої кінцевої множини. Це робиться шляхом призначення загального порядку скінченному набору. Тоді він перетворює підмножини у зростаючі послідовності, до яких застосовується лексикографічний порядок.
- Узагальнення відноситься до послідовності декартового добутку частково впорядкованих множин, і така послідовність є повним порядком, якщо і тільки якщо кожен фактор декартового добутку впорядкований повністю.
Розуміння формального поняття лексикографічного порядку
- Щоб зрозуміти формальне поняття лексикографічного порядку:
- Він починається зі скінченного набору A, який відомий як алфавіт і повністю секвенований. Крім того, це означає, що для a і b (будь-яких двох символів, які є різними і не однаковими) в A, або a
- Тут слова A є скінченною послідовністю символів з A, включаючи слова довжини 1, що містять один символ, слова довжини 2 з двома символами, а для слів довжиною три це 3 і так далі. З повагою, він також включає порожню послідовність ? не тримаючи жодної символіки. Таким чином, лексикографічний порядок для скінченної множини A можна описати так:
- Припустимо, для двох різних світів однакової довжини a=a1a2…аkі b=b1b2…bkнадається. Тут порядок двох слів залежить від алфавітного порядку символів на першому місці i, де два слова змінюються під час відліку від початку слів, тобто задовольняють умову a i i в порядку алфавіту А.
- Якщо два слова мають різну довжину, звичайний лексикографічний порядок доповнює коротше слово пробілами в кінці, доки обидва слова не стануть однаковими за довжиною, а потім слова порівнюються.
Реалізація лексикографічного в Java
Як обговорювалося вище, лексикографічний порядок можна використовувати або для порівняння двох рядків, або для сортування елементів. Тут ми обговоримо обидва методи та запровадимо кожен.
Сортування елементів у лексикографічному порядку
алгоритми сортування вставками
Розташування слів по порядку називається лексикографічний порядок або також відомий як Порядок словника . Це означає, що при застосуванні лексикографічного порядку слова впорядковуються в алфавітному порядку відповідно до їх складових алфавітів. Для сортування масиву рядків у лексикографічному порядку ми маємо наступні два методи:
Спосіб 1: Застосування будь-якого методу сортування
Нижче наведено приклад коду, який дозволить нам зрозуміти, як ми можемо виконувати сортування елементів у лексикографічному порядку:
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;>
Виконавши наведений вище вихід, ми отримали показаний нижче результат:
Порівняння двох рядків за допомогою лексикографічного порядку в Java
Для порівняння двох рядків за допомогою лексикографічного порядку ми маємо такі два методи:
Використання методу compareTo ().
Почнемо один за одним:
Використання методу compareTo ().
Нижче наведено приклад реалізації, за допомогою якого ми можемо порівняти з рядками лексикографічно:
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)>