logo

Leksikografinė tvarka Java

Terminas Leksikografinė tvarka yra matematinis terminas, žinomas pavadinimais: leksikos tvarka, leksikografinis(al) produktas, abėcėlės tvarka arba žodyno tvarka.

Šiame skyriuje bus pateikta temos leksikografinė tvarka, jos apibrėžimai ir kita išsami informacija. Po to išmoksime vartoti leksikografinės tvarkos sąvoką Java programavimo kalba .

Leksikografinės tvarkos apibrėžimas

Leksikografinė tvarka arba leksikografija matematikoje – tai žodynų abėcėlinės sekos apibendrinimas iki surikiuotų simbolių sekų arba visiškai sutvarkyto sąrašo elementų. Terminas leksikografinė tvarka yra motyvuotas žodžiu „leksika“. Žodynas yra žodžių rinkinys, vartojamas kai kuriose kitose kalbose ir turi įprastą tvarką. Taigi, leksikografinė tvarka yra būdas formalizuoti žodžių tvarką, kai pateikiama pagrindinių simbolių tvarka.

Programavime leksikografinė tvarka populiariai žinoma kaip Žodyno tvarka ir naudojamas rūšiuoti eilučių masyvą, palyginti dvi eilutes arba rūšiuoti masyvo elementus. Elementus rūšiuoti leksiškai tampa gana lengva. Taip yra todėl, kad leksikografinė tvarka turi keletą variantų ir apibendrinimų, kuriuose:

  • Vienas variantas taikomas skirtingo ilgio sekoms, nes prieš nagrinėjant konkrečius elementus, sekų ilgiai lyginami.
  • Antrasis variantas naudojamas tam tikros baigtinės aibės eilės poaibiuose. Tai daroma priskirdama bendrą tvarką baigtinei aibei. Tada ji paverčia poaibius į didėjančias sekas, kurioms taikoma leksikografinė tvarka.
  • Apibendrinimas reiškia iš dalies sutvarkytų aibių Dekarto sandaugų seką, ir tokia seka yra visa eilė, jei ir tik tada, kai kiekvienas Dekarto sandaugos veiksnys yra išdėstytas visiškai.

Formaliosios leksikografinės tvarkos sampratos supratimas

  • Norėdami suprasti formalią leksikografinės tvarkos sampratą:
  • Jis prasideda baigtine aibė A, kuri žinoma kaip abėcėlė ir yra visiškai suskirstyta į seką. Be to, tai reiškia, kad a ir b (bet kokie du simboliai, kurie yra skirtingi ir nevienodi) A, arba a
  • Čia A žodžiai yra baigtinė simbolių seka iš A, įskaitant 1 ilgio žodžius, turinčius vieną simbolį, 2 ilgio žodžius su dviem simboliais, o trijų ilgių žodžiams tai yra 3 ir pan. Kalbant apie tai, tai taip pat apima tuščią seką ? neturintis visiškai jokių simbolių. Taigi baigtinės aibės A leksikografinę tvarką galima apibūdinti taip:
  • Tarkime, dviem skirtingiems vienodo ilgio pasauliams a=a1a2…akir b=b1b2…bkyra duota. Čia dviejų žodžių tvarka priklauso nuo simbolių abėcėlės tvarkos pirmoje vietoje i, kur du žodžiai skiriasi skaičiuojant nuo žodžių pradžios, t. y. tenkinant sąlygą a i i abėcėlės A tvarka.
  • Jei dviejų žodžių ilgis skiriasi, įprasta leksikografinė tvarka trumpesnio ilgio žodį užklijuoja tuščiais langeliais, kol abu žodžiai tampa vienodo ilgio, tada žodžiai lyginami.

Leksikografijos diegimas Java

Kaip aptarta aukščiau, leksikografinė tvarka gali būti naudojama lyginant dvi eilutes arba rūšiuojant elementus. Čia aptarsime abu metodus ir juos įgyvendinsime.

kiek metų Kylie Jenner

Elementų rūšiavimas leksikografine tvarka

Žodžių išdėstymas eilės tvarka žinomas kaip leksikografinė tvarka arba taip pat žinomas kaip Žodyno tvarka . Tai reiškia, kad taikant leksikografinę tvarką, žodžiai išdėstomi abėcėlės tvarka pagal jų sudedamąsias abėcėlės. Norėdami rūšiuoti eilučių masyvą leksikografine tvarka, turime šiuos du metodus:

1 būdas: bet kokio rūšiavimo metodo taikymas

Žemiau pateikiamas pavyzdinis kodas, kuris leis mums suprasti, kaip galime rūšiuoti elementus leksikografine tvarka:

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

Vykdydami aukščiau pateiktą išvestį, gavome toliau pateiktą išvestį:

Leksikografinė tvarka Java

Dviejų eilučių palyginimas naudojant „Java“ leksikografinę tvarką

Norėdami palyginti dvi eilutes leksikografine tvarka, turime šiuos du metodus:

gauti ryšį

Naudojant palyginimo į () metodą

Pradėkime po vieną:

Naudojant palyginimo į () metodą

Žemiau pateikiamas įgyvendinimo pavyzdys, kurį naudodami galime palyginti su eilutėmis leksikografiškai:

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