Arrays.sort() ב-Java

Arrays.sort() ב-Java
נסה את זה ב-GfG Practice

השיטה Arrays.sort() ב-Java משמשת למיון האלמנטים של מערך.

  • הוא מספק אפשרויות גמישות למיון של מערכי משנה של מערכים או אפילו אובייקטים מותאמים אישית באמצעות השוואות.
  • יכול למיין גם מערכים פרימיטיביים (int char וכו') וגם מערכי אובייקט (Integer String וכו').

דוּגמָה: מיון מערכי מספרים שלמים ותווים בסדר עולה

Java
   import     java.util.Arrays  ;   class   Geeks  {          public     static     void     main  (  String  []     args  )     {      // Integer array      int  []     arr1     =     {  2       -  1       3       4  };      // Character array      char  []     arr2     =     {  'b'       'a'       'c'       'b'  };      // Sorting arrays in ascending order      Arrays  .  sort  (  arr1  );         Arrays  .  sort  (  arr2  );      // Print sorted arrays      System  .  out  .  println  (  Arrays  .  toString  (  arr1  ));         System  .  out  .  println  (  Arrays  .  toString  (  arr2  ));      }   }   

תְפוּקָה
[-1 2 3 4] [a b b c]  

הֶסבֵּר:

  • Arrays.sort() מסדר מחדש אלמנטים בסדר עולה.
  • כפילויות לא מוסרות.
  • מערכים פרימיטיביים אינם יכולים להשתמש בהשוואות מותאמות אישית.

תחביר של שיטת Arrays.sort()

1. כדי למיין את כל המערך

Arrays.sort(); 

2. כדי למיין מערך משנה

public static void sort(int[] arr int from_Index int to_Index) ;

פרמטרים:

  • arr : המערך שיש למיין.
  • from_Index: האינדקס של האלמנט הראשון (כולל) שיש למיין.
  • to_Index : האינדקס של האלמנט האחרון (בלעדי) שיש למיין.
  • סוג החזרה: void (שיטה זו לא מחזירה כלום).

פֶּתֶק:

  • Arrays.sort() אינו מסיר כפילויות; זה רק מסדר מחדש אלמנטים.
  • טיפוסים פרימיטיביים אינם יכולים להשתמש בהשוואות מותאמות אישית; המיון הוא בסדר טבעי (עולה).

דוגמה: מיון תת-מערך

ניתן למיין חלק ממערך על ידי ציון מדדי התחלה (כולל) וסוף (בלעדי).

Java
   import     java.util.Arrays  ;   public     class   Geeks  {          public     static     void     main  (  String  []     args  ){      int  []     arr     =     {  2       -  1       4       3  };      // Sort elements from index 1 to 3      Arrays  .  sort  (  arr       1       4  );      // Print array after sorting subarray      System  .  out  .  println  (  Arrays  .  toString  (  arr  ));      }   }   

תְפוּקָה
[2 -1 3 4]  

הֶסבֵּר: רק הרכיבים במדדים 1 2 ו-3 ממוינים; האלמנט באינדקס 0 נשאר ללא שינוי.

מיון בסדר יורד

כדי למיין מערך בסדר יורד נוכל להשתמש בשיטת Arrays.sort() עם Collections.reverseOrder() כמשוואה.

Java
   import     java.util.Arrays  ;   import     java.util.Collections  ;   public     class   Geeks  {      public     static     void     main  (  String  []     args  )     {      // Integer array      Integer  []     arr     =     {  2       -  1       3       4  };      Arrays  .  sort  (  arr       Collections  .  reverseOrder  ());         System  .  out  .  println  (  Arrays  .  toString  (  arr  ));         // String array      String  []     str     =     {  'Hii'       'Vishnu'       'chauhan'  };      Arrays  .  sort  (  str       Collections  .  reverseOrder  ());         System  .  out  .  println  (  Arrays  .  toString  (  str  ));      }   }   

תְפוּקָה
[4 3 2 -1] [chauhan Vishnu Hii]  

הֶסבֵּר:

  • עובד על מערכי אובייקטים בלבד; טיפוסים פרימיטיביים (int) אינם יכולים להשתמש בהשוואות.
  • עבור מחרוזות ממיין מבחינה לקסיקוגרפית מ-Z -> A.

מיון מותאם אישית עם Comparator

אנו יכולים למיין מערך של אובייקטים על ידי הגדרת היגיון מיון מותאם אישית בעזרת שימוש ב-  ממשק השוואה .

Java
   import     java.util.*  ;   // Custom class   class   Student  {          int     roll  ;      String     name  ;      String     address  ;      Student  (  int     roll       String     name       String     address  ){          this  .  roll     =     roll  ;      this  .  name     =     name  ;      this  .  address     =     address  ;      }      // Print student details      public     String     toString  ()     {      return     roll     +     ' '     +     name     +     ' '     +     address  ;      }   }   // Comparator to sort by roll number   class   SortByRoll     implements     Comparator   <  Student  >  {          public     int     compare  (  Student     s1       Student     s2  ){          return     s1  .  roll     -     s2  .  roll  ;      }   }   class   Geeks     {      public     static     void     main  (  String  []     args  ){      Student  []     students     =     {      new     Student  (  1       'Ram'       'MP'  )      new     Student  (  2       'Shyam'       'UP'  )      new     Student  (  3       'Hari'       'Delhi'  )      };      // Sort using custom comparator      Arrays  .  sort  (  students       new     SortByRoll  ());      // Print sorted students      for     (  Student     s     :     students  )      System  .  out  .  println  (  s  );      }   }   

תְפוּקָה
1 Ram MP 2 Shyam UP 3 Hari Delhi  

הֶסבֵּר:

  • Comparator מאפשר לוגיקת מיון מותאמת אישית מבלי לשנות את המחלקה.
  • כאן התלמידים ממוינים לפי מספר גליל.

מיון טבעי עם ממשק דומה

בדוגמה שלהלן אנו ממיינים מערך של אובייקטים של סטודנטים על סמך שמם בסדר אלפביתי.

Java
   import     java.util.Arrays  ;   class   Student     implements     Comparable   <  Student  >  {          int     r  ;      String     n  ;      String     a  ;      // Constructor      public     Student  (  int     r       String     n       String     a  ){          this  .  r     =     r  ;      this  .  n     =     n  ;      this  .  a     =     a  ;      }      // compareTo method to sort by name      public     int     compareTo  (  Student     o  ){          return     this  .  n  .  compareTo  (  o  .  n  );      }      // toString() method to print Student details      public     String     toString  ()     {      return     this  .  r     +     ' '     +     this  .  n     +     ' '     +     this  .  a  ;      }   }   public     class   Geeks  {          public     static     void     main  (  String  []     args  ){          Student  []     s     =     {      new     Student  (  1       'Ram'       'UP'  )      new     Student  (  2       'Shyam'       'MP'  )      new     Student  (  3       'Hari'       'Bihar'  )      };      // Sorting students by name in alphabetical order      Arrays  .  sort  (  s  );      for     (  Student     student     :     s  )      System  .  out  .  println  (  student  );      }   }   

תְפוּקָה
3 Hari Bihar 1 Ram UP 2 Shyam MP  

הֶסבֵּר:

  • בדוגמה זו אנו משתמשים ב- ממשק בר השוואה כדי להגדיר סדר טבעי עבור חפצי הסטודנט.
  • על ידי יישום השיטה אנו מציינים כיצד יש להשוות בין שני אובייקטי Student על ידי הפעלת מיון על סמך שם התלמיד.

זה מאפשר לנו להשתמש בשיטת Arrays.sort() ישירות על מערך של אובייקטי Student כדי למיין אותם לפי סדר וכאן אנחנו לא צריכים השוואת נפרדת.

צור חידון