logo

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

Пробајте на ГфГ пракси ' title=

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

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

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

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 

Објашњење:

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

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