Введение в сортировку в 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):
-
- Преобразуйте набор в список.
- Сортируйте список, используя метод sort (array_name).
- Преобразовать полученный отсортированный список обратно в 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 с различными кодами и выходными данными. Вы также можете просмотреть другие наши статьи, чтобы узнать больше-
- JComboBox в Java
- Сортировка в C
- Сортировка кучи в C
- Пузырьковая сортировка в JavaScript
- Что такое сортировка в C ++?
- Введение в сортировку в PHP
- Сортировка кучи в Python
- Вставка Сортировка в JavaScript
- Hashmap в Java
- Сравнимый пример в Java | Интерфейс коллекции на Java