logo

Ordinul lexicografic Java

Termenul Ordine lexicografică este un termen matematic cunoscut sub denumiri: ordine lexicală, produs lexicografic(al), ordine alfabetică sau ordine dicționar.

Această secțiune va acoperi ordinea lexicografică a subiectului, definiția acesteia și alte informații detaliate. După aceea, vom învăța cum să folosim conceptul de ordine lexicografică în Limbajul de programare Java .

Definirea ordinii lexicografice

Ordinea lexicografică sau lexicografică în matematică este o generalizare a succesiunii alfabetice a dicționarelor la secvențele simbolurilor sau elementelor ordonate ale unei liste total ordonate. Termenul de ordine lexicografică este motivat de cuvântul „lexicon”. Lexiconul este setul de cuvinte folosite în unele dintre celelalte limbi și are o ordonare convențională. Astfel, ordinea lexicografică este o modalitate de oficializare a ordinii cuvintelor în care este dată ordinea simbolurilor subiacente.

salvarea gimp ca jpeg

În programare, ordinea lexicografică este cunoscută în mod popular ca Dicţionar order și este folosit pentru a sorta o matrice de șiruri, pentru a compara două șiruri sau pentru a sorta elemente de matrice. Devine destul de ușor să sortați elementele lexical. Se datorează faptului că ordinea lexicografică are mai multe variante și generalizări în care:

  • O variantă este aplicabilă secvențelor de lungimi diferite, deoarece înainte de a lua în considerare elementele particulare, lungimile secvențelor sunt comparate.
  • A doua variantă este folosită în ordinea submulțimii unei mulțimi finite date. Face acest lucru atribuind o ordine totală mulțimii finite. Apoi convertește submulțimile în secvențe crescătoare cărora li se aplică ordinea lexicografică.
  • Generalizarea se referă la secvența produsului cartezian de mulțimi parțial ordonate, iar o astfel de secvență este o ordine totală, dacă și numai dacă fiecare factor al produsului cartezian este ordonat total.

Înțelegerea noțiunii formale de ordine lexicografică

  • Pentru a înțelege noțiunea formală a ordinii lexicografice:
  • Începe cu o mulțime finită A, care este cunoscută sub numele de alfabet și este complet secvențial. În plus, înseamnă că pentru a și b (oricare două simboluri care sunt diferite și nu la fel) în A, fie a
  • Aici, cuvintele lui A sunt secvența finită de simboluri din A și care includ cuvinte cu lungimea 1 care dețin un singur simbol, cuvinte cu lungimea 2 cu două simboluri, iar pentru cuvintele cu lungimea trei, este 3 și așa mai departe. În ceea ce privește, include și secvența goală ? nu ținând deloc simboluri. Astfel, ordinea lexicografică pentru mulțimea finită A poate fi descrisă astfel:
  • Să presupunem, pentru cele două lumi diferite de aceeași lungime, a=a1A2…Akși b=b1b2…bkeste dată. Aici, ordinea a două cuvinte depinde de ordinea alfabetică a simbolurilor în primul rând i, unde două cuvinte variază atunci când se numără de la începutul cuvintelor, adică îndeplinirea condiției a i i în ordinea alfabetului A.
  • Dacă două cuvinte au variat în lungime, ordinea lexicografică obișnuită adaugă cuvântul cu o lungime mai scurtă cu spații libere la sfârșit, până când ambele cuvinte devin aceeași ca lungime, apoi cuvintele sunt comparate.

Implementarea lexicografică în Java

După cum sa discutat mai sus, această ordine lexicografică poate fi folosită fie pentru compararea a două șiruri, fie pentru sortarea elementelor. Aici, vom discuta ambele metode și vom implementa fiecare.

Sortarea elementelor în ordine lexicografică

Aranjarea cuvintelor în ordine este cunoscută ca ordine lexicografică sau cunoscut și ca Dicţionar order . Înseamnă că la aplicarea ordinii lexicografice, cuvintele sunt ordonate alfabetic conform alfabetelor lor componente. Pentru sortarea unei matrice de șiruri în ordine lexicografică, avem următoarele două metode:

Metoda 1: Aplicarea oricărei metode de sortare

șir comparare c#

Mai jos este un exemplu de cod dat, care ne va permite să înțelegem cum putem efectua sortarea elementelor în ordine lexicografică:

 public class Main { public static void main(String[] args) { String[] name = { &apos;John&apos;,&apos;Remo&apos;,&apos;Mixy&apos;,&apos;Julie&apos;,&apos;Ronny&apos;}; int n = 5; System.out.println(&apos;Before Sorting&apos;); 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 + &apos; &apos;); System.out.println(); } public static void main(String[] args) { String arr[] = {&apos;John&apos;,&apos;Harry&apos;,&apos;Emlie&apos;,&apos;Ronny&apos;,&apos;Julie&apos;,&apos;Mary&apos; }; 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&apos;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 = &apos;String&apos;, str2 = &apos;Comparison&apos;; 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 = &apos;Red&apos;; String secondString = &apos;Red&apos;; String thirdString = &apos;Green&apos;; String fourthString = &apos;Yellow&apos;; String fifthString = &apos;REdGreen&apos;; System.out.println(&apos;Comparing two strings lexicographically by user defined function&apos;); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the secondString (&apos;+secondString+&apos;) returns: &apos;); System.out.println(compareString(firstString, secondString)); System.out.print(&apos;
Compairing secondString (&apos;+secondString+&apos;) to the thirdString (&apos;+thirdString+&apos;) returns: &apos;); System.out.println(compareString(secondString, thirdString)); System.out.print(&apos;
Compairing thirdString (&apos;+thirdString+&apos;) to the fourthString (&apos;+fourthString+&apos;) returns: &apos;); System.out.println(compareString(thirdString, fourthString)); System.out.print(&apos;
Compairing fourthString (&apos;+fourthString+&apos;) to the firstString (&apos;+firstString+&apos;) returns: &apos;); System.out.println(compareString(fourthString, firstString)); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the fifthString (&apos;+fifthString+&apos;) returns: &apos;); 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;>

La executarea ieșirii de mai sus, am obținut rezultatul afișat mai jos:

Ordinul lexicografic Java

Compararea a două șiruri folosind ordinea lexicografică în Java

Pentru a compara două șiruri folosind ordinea lexicografică, avem următoarele două metode:

Folosind metoda compareTo ().

Să începem unul câte unul:

Folosind metoda compareTo ().

clasă vs obiect în java

Mai jos este un exemplu de implementare prin care putem compara cu șiruri lexicografic:

 import java.lang.*; public class StringExample { public static void main(String[] args) { String str1 = &apos;String&apos;, str2 = &apos;Comparison&apos;; 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 = &apos;Red&apos;; String secondString = &apos;Red&apos;; String thirdString = &apos;Green&apos;; String fourthString = &apos;Yellow&apos;; String fifthString = &apos;REdGreen&apos;; System.out.println(&apos;Comparing two strings lexicographically by user defined function&apos;); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the secondString (&apos;+secondString+&apos;) returns: &apos;); System.out.println(compareString(firstString, secondString)); System.out.print(&apos;
Compairing secondString (&apos;+secondString+&apos;) to the thirdString (&apos;+thirdString+&apos;) returns: &apos;); System.out.println(compareString(secondString, thirdString)); System.out.print(&apos;
Compairing thirdString (&apos;+thirdString+&apos;) to the fourthString (&apos;+fourthString+&apos;) returns: &apos;); System.out.println(compareString(thirdString, fourthString)); System.out.print(&apos;
Compairing fourthString (&apos;+fourthString+&apos;) to the firstString (&apos;+firstString+&apos;) returns: &apos;); System.out.println(compareString(fourthString, firstString)); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the fifthString (&apos;+fifthString+&apos;) returns: &apos;); 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)>