logo

Lexikográfiai Rend Java

A lexikográfiai sorrend kifejezés egy matematikai kifejezés, amelyet név szerint ismerünk: lexikális rend, lexikográfiai(al) termék, ábécé sorrend vagy szótári sorrend.

Ez a rész a téma lexikográfiai sorrendjével, annak meghatározásával és egyéb részletes információkkal foglalkozik. Ezt követően megtanuljuk a lexikográfiai rend fogalmának használatát a Java programozási nyelv .

A lexikográfiai sorrend meghatározása

A lexikográfiai sorrend vagy a lexikográfia a matematikában a szótárak ábécé sorrendjének általánosítása a rendezett szimbólumok sorozataira vagy egy teljesen rendezett lista elemeire. A lexikográfiai rend kifejezést a „lexikon” szó motiválja. A Lexikon olyan szavak halmaza, amelyeket néhány más nyelvben használnak, és hagyományos sorrendű. Így a lexikográfiai sorrend a szórend formalizálásának módja, ahol a mögöttes szimbólumok sorrendje adott.

A programozásban a lexikográfiai sorrendet köztudottan ún Szótárrend és egy karakterlánc tömb rendezésére, két karakterlánc összehasonlítására vagy tömbelemek rendezésére szolgál. Elég könnyűvé válik az elemek lexikális rendezése. Ennek az az oka, hogy a lexikográfiai sorrendnek számos változata és általánosítása van, amelyekben:

  • Az egyik változat a különböző hosszúságú sorozatokra alkalmazható, mivel az egyes elemek figyelembe vétele előtt a sorozatok hosszát összehasonlítjuk.
  • A második változatot egy adott véges halmaz sorrendi részhalmazaiban használjuk. Ezt úgy teszi, hogy egy teljes sorrendet rendel a véges halmazhoz. Ezután a részhalmazokat növekvő sorozatokká alakítja, amelyekre a lexikográfiai sorrendet alkalmazzák.
  • Az általánosítás a részben rendezett halmazok derékszögű szorzatára vonatkozik, és ez a sorozat akkor és csak akkor teljes sorrend, ha a Descartes-szorzat minden tényezője teljesen rendezett.

A lexikográfiai rend formális fogalmának megértése

  • A lexikográfiai rend formális fogalmának megértéséhez:
  • Egy véges A halmazzal kezdődik, amely ábécé néven ismert, és teljesen szekvenciális. Ez továbbá azt jelenti, hogy a és b esetén (bármely két különböző és nem azonos szimbólum) A-ban vagy a
  • Itt A szavai az A véges szimbólumsorozata, amely magában foglalja az 1 hosszúságú szavakat, amelyek egyetlen szimbólumot tartalmaznak, a 2 hosszúságú szavakat két szimbólummal, a három hosszúságú szavak esetében pedig a 3-at, és így tovább. Ami azt illeti, benne van az üres ? egyáltalán nem tartanak szimbólumokat. Így az A véges halmaz lexikográfiai sorrendje a következőképpen írható le:
  • Tegyük fel, hogy a két különböző, azonos hosszúságú világra a=a1a2…akés b=b1b2…bkadott. Itt a két szó sorrendje az első helyen lévő szimbólumok ábécé sorrendjétől függ, ahol két szó a szavak elejétől számítva változik, azaz teljesíti az a feltételt én i az A ábécé sorrendjében.
  • Ha két szó hossza változó, akkor a szokásos lexikográfiai sorrend a szót rövidebbre tömíti, a végén üres karakterekkel, amíg mindkét szó azonos hosszúságú lesz, majd a szavakat összehasonlítja.

A Lexikográfia megvalósítása Java nyelven

Mint fentebb tárgyaltuk, ez a lexikográfiai sorrend használható két karakterlánc összehasonlítására vagy az elemek rendezésére. Itt megvitatjuk mindkét módszert, és mindegyiket megvalósítjuk.

Elemek rendezése lexikográfiai sorrendben

A szavak sorrendbe állítása az úgynevezett lexikográfiai rend vagy más néven Szótárrend . Ez azt jelenti, hogy lexikográfiai sorrend alkalmazásakor a szavak ábécé sorrendbe kerülnek, az összetevő ábécé szerint. Egy karakterlánc tömb lexikográfiai sorrendbe rendezéséhez a következő két módszerünk van:

1. módszer: Bármely válogatási módszer alkalmazása

Az alábbiakban látható egy példakód, amely megmagyarázza, hogyan tudjuk lexikográfiai sorrendben rendezni az elemeket:

 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;>

A fenti kimenet végrehajtásakor az alábbi kimenetet kaptuk:

Lexikográfiai Rend Java

Két karakterlánc összehasonlítása Java lexikográfiai sorrendben

Két karakterlánc lexikográfiai sorrendben történő összehasonlításához a következő két módszer áll rendelkezésünkre:

Összehasonlításhoz () módszer használata

Kezdjük egyesével:

Összehasonlításhoz () módszer használata

Az alábbiakban bemutatunk egy példa megvalósítást, amellyel lexikográfiailag összehasonlíthatjuk a karakterláncokkal:

 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)>