مصطلح الترتيب المعجمي هو مصطلح رياضي يعرف بأسماء: الترتيب المعجمي، أو المنتج المعجمي، أو الترتيب الأبجدي، أو ترتيب القاموس.
سيغطي هذا القسم موضوع الترتيب المعجمي وتعريفه ومعلومات تفصيلية أخرى. وبعد ذلك سوف نتعلم كيفية استخدام مفهوم الترتيب المعجمي في لغة برمجة جافا .
تعريف الترتيب المعجمي
الترتيب المعجمي أو المعجمي في الرياضيات هو تعميم للتسلسل الأبجدي للقواميس على تسلسل الرموز المرتبة أو عناصر القائمة المرتبة كليًا. مصطلح الترتيب المعجمي مدفوع بكلمة 'معجم'. المعجم هو مجموعة الكلمات المستخدمة في بعض اللغات الأخرى وله ترتيب تقليدي. وبالتالي، فإن الترتيب المعجمي هو وسيلة لإضفاء الطابع الرسمي على ترتيب الكلمات حيث يتم إعطاء ترتيب الرموز الأساسية.
في البرمجة، يُعرف الترتيب المعجمي شعبيًا باسم ترتيب القاموس ويستخدم لفرز مصفوفة سلسلة، أو مقارنة سلسلتين، أو فرز عناصر المصفوفة. يصبح من السهل جدًا فرز العناصر بشكل معجمي. وذلك لأن الترتيب المعجمي له عدة متغيرات وتعميمات منها:
- أحد المتغيرات ينطبق على تسلسلات ذات أطوال مختلفة كما هو الحال قبل النظر في العناصر المعينة، حيث تتم مقارنة أطوال التسلسلات.
- يتم استخدام المتغير الثاني لترتيب مجموعات فرعية من مجموعة محدودة معينة. ويتم ذلك عن طريق تعيين ترتيب إجمالي للمجموعة المحدودة. ثم يقوم بتحويل المجموعات الفرعية إلى تسلسلات متزايدة يتم تطبيق الترتيب المعجمي عليها.
- يشير التعميم إلى تسلسل المنتج الديكارتي للمجموعات المرتبة جزئيًا، وهذا التسلسل هو ترتيب إجمالي، فقط إذا تم ترتيب كل عامل من عناصر المنتج الديكارتي بالكامل.
فهم المفهوم الرسمي للنظام المعجمي
- لفهم المفهوم الرسمي للترتيب المعجمي:
- يبدأ بالمجموعة المحدودة A، والتي تُعرف بالأبجدية وهي متسلسلة بالكامل. وهذا يعني أيضًا أنه بالنسبة لـ a وb (أي رمزين مختلفين وغير متماثلين) في A، إما a
- هنا، كلمات A هي التسلسل المحدود للرموز من A وتتضمن الكلمات التي يبلغ طولها 1 والتي تحمل رمزًا واحدًا، والكلمات التي يبلغ طولها 2 والتي تحتوي على رمزين، وبالنسبة للكلمات التي يبلغ طولها ثلاثة، فهي 3، وهكذا. مع تحياتي، فهو يتضمن أيضًا التسلسل الفارغ؟ لا يحمل أي رموز على الإطلاق. وبالتالي يمكن وصف الترتيب المعجمي للمجموعة المحدودة A على النحو التالي:
- لنفترض أنه بالنسبة للعالمين المختلفين بنفس الطول، فإن a=a1أ2…أكو ب = ب1ب2…بكمعطى. وهنا يعتمد ترتيب الكلمتين على الترتيب الأبجدي للرموز في المقام الأول حيث تختلف كلمتان عند العد من بداية الكلمات، أي تحقيق الشرط أ أنا i ضمن ترتيب الأبجدية أ.
- إذا اختلف طول كلمتين، فإن الترتيب المعجمي المعتاد يحشو الكلمة ذات الطول الأقصر بفراغات في النهاية حتى تصبح كلتا الكلمتين متساويتين في الطول، ثم تتم مقارنة الكلمات.
تنفيذ المعجمية في جافا
كما نوقش أعلاه، يمكن استخدام الترتيب المعجمي إما لمقارنة سلسلتين أو فرز العناصر. سنناقش هنا كلا الطريقتين وسنقوم بتنفيذ كل منهما.
فرز العناصر بالترتيب المعجمي
ترتيب الكلمات بالترتيب يعرف ب ترتيب معجمي أو المعروف أيضا باسم ترتيب القاموس . ويعني ذلك أنه عند تطبيق الترتيب المعجمي، يتم ترتيب الكلمات أبجديًا حسب الحروف الهجائية المكونة لها. لفرز مصفوفة سلسلة بترتيب معجمي، لدينا الطريقتين التاليتين:
الطريقة الأولى: تطبيق أي طريقة فرز
فيما يلي رمز المثال الموضح الذي سيسمح لنا بفهم كيف يمكننا إجراء الفرز على العناصر بالترتيب المعجمي:
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
لمقارنة سلسلتين باستخدام الترتيب المعجمي، لدينا الطريقتين التاليتين:
باستخدام طريقة المقارنة ().
لنبدأ واحدًا تلو الآخر:
باستخدام طريقة المقارنة ().
يوجد أدناه مثال على التنفيذ يمكننا من خلاله مقارنة السلاسل المعجمية:
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)>