Введение в сортировку в Java

  • Сортировка в Java - это, в основном, расположение группы элементов, хранящихся где-то в определенном порядке, этот порядок может быть как восходящим, так и нисходящим. В программировании в реальном времени существует множество сценариев, где возникает необходимость сортировки элементов, поскольку это также приводит к поиску конкретный элемент легко, так как элементы могут быть легко получены по индексу массивов напрямую, если отсортированы. Элементы, которые необходимо отсортировать, могут храниться либо в массиве, либо в коллекции. Коллекция имеет много типов в Java-подобных наборах, дереве, карте, куче, списке и т. Д. Хотя существуют разные типы алгоритмов сортировки, которые используются для сортировки элементов в виде массива, подобного Bubble Sort, Heap Sort, Insertion Sort Сортировка выбора, Сортировка слиянием и т. Д.
  • Программисты используют разные алгоритмы для сортировки элементов в соответствии с их конкретными требованиями и сложностью алгоритмов. Эти алгоритмы сортировки реализованы с помощью различных циклов и переменных для его итерации. Помимо использования алгоритмов сортировки для сортировки элементов в массиве, Java предоставляет встроенную функцию сортировки, которая может помочь с этим, и программисту не нужно зацикливаться на больших циклах и думать о сложности. Да, вы правильно поняли, в Java функция sort () используется для сортировки элементов, хранящихся либо в массивах, либо в коллекциях, и с очень низкой сложностью o (n (logn)). Хотя реализация метода в обоих случаях немного отличается.

Синтаксис для массивов:

Arrays.sort(array_name);

Для коллекций

Collections.sort(array_name_list);

  • Здесь array_name и array_name_list - это имя массива или коллекции, которые необходимо отсортировать.
  • Массивы - это имена классов Java.
  • Коллекция представляет собой фреймворк на Java.
  • sort () - встроенная функция сортировки, используемая в Java.

Как сортировка выполняется в Java?

Ниже приведены следующие пункты:

  • Посредством использования алгоритмов сортировки сортировка может также выполняться с алгоритмами, варьирующимися от неэффективных до эффективных, и каждый алгоритм имеет свою собственную временную и пространственную сложность.
  • Иногда эти алгоритмы имеют очень высокую сложность, поэтому их нельзя использовать в реальных сценариях, где необходимо обрабатывать большие объемы данных.
  • Как упоминалось выше, во встроенной функции Java метод sort () используется для сортировки всех элементов массива и коллекции. Согласно официальному Java DOC, Array.sort использует быструю сортировку, которая является двойной сводной и сравнительно намного быстрее, чем быстрая сортировка с одной центральной.
  • Одним из величайших преимуществ этого является то, что он обеспечивает сложность O (n (logn)). Он использует очень стабильную и итеративную реализацию объекта массива сортировки слиянием. Java предоставляет метод сортировки массива также в обратном порядке в соответствии с требованием программиста сортировать по возрастанию или убыванию. Метод Collections.reverseOrder () используется для сортировки элементов в обратном или нисходящем порядке.
  • Java 8 также предоставляет возможность сортировать массивы параллельно, используя параллельную сортировку, которая использует многопоточную концепцию Java, разделяет весь массив на части и объединяет их после сортировки.

Типы сортировки в Java

Ниже упомянуты некоторые способы, с помощью которых сортировка может быть выполнена в Сортировке в Java:

1. сортировать (имя_массива)

Используется для сортировки всего массива по возрастанию. По умолчанию этот метод сортирует элементы массива в порядке возрастания.

Код:

import java.util.Arrays;
public class SimpleSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Выход:

2. Collection.reverseOrder ()

Этот метод в Java используется для сортировки массива в обратном или нисходящем порядке. Есть сценарии, в которых нам нужно отсортировать элементы в порядке убывания, а Java делает это с помощью встроенного метода.

Код:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, Collections.reverseOrder());
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Выход:

3. sort (int () array_name, int findex, int lindex)

Если необходимо отсортировать некоторую часть массива вместо всего массива, Java предоставляет возможность сортировки массива этого типа, указав 3 параметра: имя массива, первый индекс, с которого должна быть начата сортировка, и последний Индекс до, когда сортировка должна быть сделана.

Код:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, 1, 5);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)

Выход:

4. Arrays.parllelSort (имя-массива)

Из Java 8 был выпущен новый API параллельной сортировки. В основном в параллельной сортировке массив делится на 2 подмассива, а затем базовая функция Array.sort () выполняется отдельным потоком. Сортированные массивы затем объединяются в конце, чтобы сформировать полностью отсортированный массив. Это сделано для использования многопоточности.

Код:

import java.util.Arrays;
public class ParallelSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//parallel Sort function to sort the above array
Arrays.parallelSort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Выход:

Как и обычный Array.sort (), Arrays.parallelSort () также предоставляет возможность сортировки определенного диапазона массива или сортировки массива в обратном порядке.

Синтаксис:

// to Sort a range of array by parallelsort
Arrays.parallelSort(array_name, findex, lindex);
// to sort an array in reverse order using parallelSort
Arrays.parallelSort(array_name, Collections.reverseOder());

5. Collection.sort ()

Этот метод используется для сортировки коллекций, таких как список, карта, набор и т. Д. Он использует сортировку слиянием и дает ту же сложность, что и Array.sort (), т. Е. O (n (logn)).

1. Сортировка списка в порядке возрастания

Код:

import java.util.Arrays;
import java.util.Collections;
public class ListSort
(
public static void main(String() args)
(
//Unsorted list
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

Выход:

2. Сортировка списка массивов в порядке убывания

Код:

import java.util.Arrays;
import java.util.Collections;
public class ListSortRev
(
public static void main(String() args)
(
//Unsorted array list of Integers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

Выход:

3. Сортировка набора

Существует три основных правила сортировки набора «Set» с использованием метода выше (array_name):

    1. Преобразуйте набор в список.
    2. Сортируйте список, используя метод sort (array_name).
    3. Преобразовать полученный отсортированный список обратно в Set.

Код:

List numList = new ArrayList(num) ;
//Sorting the list retrieved above
Collections.sort(numList);
// Converting sorted List into Set
num = new LinkedHashSet(numList);
//Printing the Resulting Set on console
System.out.println(num);
)
)

Выход:

4. Сортировать карту

Карта коллекции в Java представляет собой комбинацию ключа и значения. Таким образом, сортировка может выполняться обоими способами - либо по ключу, либо по значению.

  • Сортировка карты по ключу: рассмотрим приведенный ниже пример сортировки карты по ключу.

Код:

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class SortHashKey
(
public static void main(String() args)
(
HashMap map = new HashMap();
map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
TreeMap treeMap = new TreeMap(map);
System.out.println(treeMap);
)
)

Выход:

Одним из самых простых способов сортировки элементов карты по ключам является добавление несортированных элементов карты в TreeMap. TreeMap автоматически сортирует элементы в порядке возрастания хэш-ключей. Хотя collection.sort () также может быть использован, чтобы сделать то же самое, он несколько сложен и должен хорошо кодироваться.

  • Сортировка карты по значению. Ниже приведен пример того, как сортировка может быть выполнена на карте по значению.

Код:

import java.util.HashMap;
import java.util.Map;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
public class SortHashValue
(
public static void main(String() args)
(
HashMap map = new HashMap(); map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
LinkedHashMap sorted = new LinkedHashMap(); map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sorted.put(x.getKey(), x.getValue()));

Выход:

В приведенном выше примере сортировки Map по значению, сначала мы устанавливаем записи с помощью map.entrySet (), а затем поток этих записей с помощью метода stream (), вызываем отсортированный массив с помощью метода sorted (), сравнивая по значению в пара. для каждого order () используется для прохождения потока для получения результата.

5. Сопоставимые

Comparable - это интерфейс, который делает классы сравнимыми с его экземплярами.

Для сравнения двух экземпляров одного и того же класса должен быть реализован сопоставимый интерфейс, а метод compareTo () должен быть переопределен. Классы, реализующие этот интерфейс, его список объектов сортируются автоматически с использованием методов Collections.sort () и Arrays.sort ().

Код:

ArrayList list = new ArrayList();
// Adding the instance objects of class Employee in list
list.add(new Employee(10, "Akshay")));
list.add(new Employee(40, "Bob")));
list.add(new Employee(20, "Priyansh")));
list.add(new Employee(50, "Chandni")));
list.add(new Employee(70, "Yashi")));
Collections.sort(list);
// Printing the sorted list on Console
System.out.println(list);

Выход:

Вывод

Выше объяснены методы сортировки в Java, которые используются в Java для нескольких сценариев массивов и коллекций. Программист должен помнить, как метод sort () должен использоваться для разных типов Collection. В Java 8 сортировка также может выполняться через Lambdas для реализации интерфейса Comparator, что упрощает сортировку. Хотя все это немного сложно изучить, с ними может быть легко работать, если понятны все основные концепции Java, особенно потоковая передача данных, массивы и коллекции. Хотя алгоритмы сортировки являются вечно зелеными и могут быть легко реализованы в Java-подобных других языках программирования, они имеют различную сложность, а встроенная функция sort () Java делает вещи проще, если базовые понятия выучены наизусть.

Рекомендуемые статьи

Это руководство по сортировке в Java. Здесь мы обсудим, как сортировка выполняется в Java и типы сортировки в Java с различными кодами и выходными данными. Вы также можете просмотреть другие наши статьи, чтобы узнать больше-

  1. JComboBox в Java
  2. Сортировка в C
  3. Сортировка кучи в C
  4. Пузырьковая сортировка в JavaScript
  5. Что такое сортировка в C ++?
  6. Введение в сортировку в PHP
  7. Сортировка кучи в Python
  8. Вставка Сортировка в JavaScript
  9. Hashmap в Java
  10. Сравнимый пример в Java | Интерфейс коллекции на Java