Termi Leksikografinen järjestys on matemaattinen termi, joka tunnetaan nimillä: sanajärjestys, leksikografinen(al)tuote, aakkosjärjestys tai sanakirjajärjestys.
Tämä osio kattaa aiheen leksikografisen järjestyksen, sen määritelmän ja muita yksityiskohtaisia tietoja. Sen jälkeen opimme käyttämään leksikografisen järjestyksen käsitettä Java ohjelmointikieli .
Leksikografisen järjestyksen määrittely
Leksikografinen järjestys eli leksikografia matematiikassa on sanakirjojen aakkosjärjestyksen yleistys järjestetyille symboleille tai täysin järjestetyn luettelon elementeille. Termi leksikografinen järjestys on motivoitunut sanasta 'leksikoni'. Sanasto on joissakin muissa kielissä käytetty sanajoukko, jolla on tavanomainen järjestys. Siten leksikografinen järjestys on tapa formalisoida sanajärjestys, jossa taustalla olevien symbolien järjestys on annettu.
Ohjelmoinnissa leksikografinen järjestys tunnetaan yleisesti nimellä Sanakirjan järjestys ja sitä käytetään lajittelemaan merkkijonotaulukkoa, vertailemaan kahta merkkijonoa tai lajittelemaan taulukon elementtejä. Elementtien lajittelusta tulee melko helppoa. Tämä johtuu siitä, että leksikografisella järjestyksellä on useita muunnelmia ja yleistyksiä, joissa:
- Yksi variantti on sovellettavissa eripituisiin sekvensseihin, kuten ennen yksittäisten elementtien tarkastelua, sekvenssien pituuksia verrataan.
- Toista varianttia käytetään tietyn äärellisen joukon osajoukkojen järjestyksissä. Se tekee sen määrittämällä kokonaisjärjestyksen äärelliselle joukolle. Sitten se muuntaa osajoukot kasvaviksi sekvensseiksi, joihin sovelletaan leksikografista järjestystä.
- Yleistys viittaa osittain järjestetyn joukon karteesiseen tulosarjaan, ja tällainen sarja on kokonaisjärjestys, jos ja vain jos karteesisen tuotteen jokainen tekijä on järjestetty kokonaan.
Leksikografisen järjestyksen muodollisen käsitteen ymmärtäminen
- Leksikografisen järjestyksen muodollisen käsitteen ymmärtämiseksi:
- Se alkaa äärellisellä joukolla A, joka tunnetaan aakkosena ja on täysin sekvensoitu. Se tarkoittaa lisäksi, että a:lle ja b:lle (mikä tahansa kaksi erilaista symbolia, jotka eivät ole samat) A:ssa joko a
- Tässä A:n sanat ovat äärellinen merkkijono A:sta ja sisältävät sanat, joiden pituus on 1 ja joissa on yksi symboli, sanat, joiden pituus on 2 ja joissa on kaksi symbolia, ja sanojen, joiden pituus on kolme, se on 3 ja niin edelleen. Mitä tulee, se sisältää myös tyhjän sekvenssin ? ei sisällä yhtään symbolia. Siten äärellisen joukon A leksikografista järjestystä voidaan kuvata seuraavasti:
- Oletetaan, että kahdelle eri samanpituiselle maailmalle a=a1a2…akja b=b1b2…bkon annettu. Tässä kahden sanan järjestys riippuu symbolien aakkosjärjestyksestä ensimmäisessä paikassa i, jossa kaksi sanaa vaihtelee laskettaessa sanojen alusta, eli täyttyvät ehdolla a i i aakkosten A järjestyksessä.
- Jos kaksi sanaa ovat pituudeltaan vaihdelleet, tavallinen leksikografinen järjestys täyttää sanan lyhyemmällä pituudella välilyönnillä lopussa, kunnes molemmat sanat ovat yhtä pitkiä, ja sitten sanoja verrataan.
Leksikografian käyttöönotto Javassa
Kuten edellä mainittiin, leksikografista järjestystä voidaan käyttää joko kahden merkkijonon vertailuun tai elementtien lajitteluun. Täällä keskustelemme molemmista menetelmistä ja toteutamme molemmat.
Elementtien lajittelu leksikografiseen järjestykseen
Sanojen järjestäminen järjestykseen tunnetaan nimellä leksikografinen järjestys tai tunnetaan myös nimellä Sanakirjan järjestys . Se tarkoittaa, että leksikografista järjestystä sovellettaessa sanat järjestetään aakkosjärjestyksessä niiden komponenttiaakkosten mukaisesti. Merkkijonotaulukon lajittelemiseksi leksikografiseen järjestykseen meillä on seuraavat kaksi tapaa:
Tapa 1: Käytä mitä tahansa lajittelumenetelmää
Alla on esimerkkikoodi, joka antaa meille ymmärtää, kuinka voimme lajitella elementtejä leksikografisessa järjestyksessä:
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;>
Kun suoritimme yllä olevan tulosteen, saimme alla näkyvän tulosteen:
Kahden merkkijonon vertailu Javassa leksikografisessa järjestyksessä
Kahden merkkijonon vertaamiseen leksikografisessa järjestyksessä meillä on seuraavat kaksi menetelmää:
Vertailumenetelmän () käyttäminen
Aloitetaan yksi kerrallaan:
Vertailumenetelmän () käyttäminen
Alla on esimerkkitoteutus, jolla voimme verrata merkkijonoja leksikografisesti:
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)>