Арраис.сорт() у Јави

Арраис.сорт() у Јави
Пробајте на ГфГ пракси

Метод Арраис.сорт() у Јави се користи за сортирање елемената низа.

  • Пружа флексибилне опције за сортирање читавих низова поднизова или чак прилагођених објеката помоћу компаратора.
  • Може сортирати и примитивне низове (инт цхар итд.) и низове објеката (Интегер Стринг итд.).

Пример: Сортирање низова целих бројева и знакова у растућем редоследу

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]  

Објашњење:

  • Арраис.сорт() мења редослед елемената у растућем редоследу.
  • Дупликати се не уклањају.
  • Примитивни низови не могу да користе прилагођене компараторе.

Синтакса метода низова.сорт().

1. Да сортирате цео низ

Арраис.сорт(); 

2. Да бисте сортирали подниз

публиц статиц воид сорт(инт[] арр инт фром_Индек инт то_Индек) ;

Параметри:

  • арр : Низ који треба сортирати.
  • фром_Индек: Индекс првог елемента (укључиво) који треба сортирати.
  • то_Индек : Индекс последњег елемента (искључиво) који треба сортирати.
  • Тип повратка: воид (овај метод не враћа ништа).

Напомена:

  • Арраис.сорт() не уклања дупликате; само мења редослед елемената.
  • Примитивни типови не могу да користе прилагођене компараторе; сортирање је природним (узлазним) редом.

Пример: Подниз за сортирање

Можете сортирати део низа тако што ћете навести почетни (инклузивни) и крајњи (искључујући) индекси.

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 остаје непромењен.

Сортирање по опадајућем редоследу

За сортирање низа у опадајућем редоследу можемо користити метод Арраис.сорт() са Цоллецтионс.реверсеОрдер() као компаратор.

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]  

Објашњење:

  • Ради само на низовима објеката; примитивни типови (инт) не могу да користе компараторе.
  • За Стрингове се лексикографски сортира од З -> А.

Прилагођено сортирање са компаратором

Можемо сортирати низ објеката дефинисањем прилагођене логике сортирања уз помоћ  Интерфејс компаратора .

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  

Објашњење:

  • Компаратор омогућава прилагођену логику сортирања без модификације класе.
  • Овде су ученици сортирани по броју листа.

Природно сортирање са упоредивим интерфејсом

У следећем примеру сортирамо низ Студент објеката на основу њиховог имена по абецедном реду.

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  

Објашњење:

  • У овом примеру користимо Упоредиви интерфејс да се дефинише природни поредак за објекте Студент.
  • Имплементацијом методе специфицирамо како два студентска објекта треба да се пореде омогућавањем сортирања на основу имена ученика.

Ово нам омогућава да користимо метод Арраис.сорт() директно на низу Студент објеката да их сортирамо по редоследу и овде нам није потребан посебан компаратор.

Креирај квиз

Можда Ће Вам Се Свидети