Виды сортировок массивов java

Сортировка массива в Java

В этой статье будут обсуждаться различные методы сортировки массива примитивных типов или объектов в Java.

1. Сортировка массива с помощью Arrays.sort() метод

Arrays class предоставляет несколько статических методов для сортировки массивов:

Он сортирует указанный массив типов примитивов или объектов в порядке возрастания в соответствии с естественным порядком его элементов.

У него также есть версия, которая сортирует указанный массив между указанным диапазоном:

Arrays.sort() использует Dual-Pivot Quicksort, который предлагает O(n.log(n)) производительность. Обычно это быстрее, чем традиционный (одноповоротный) Быстрая сортировка реализации.

Он сортирует указанный массив объектов в соответствии с порядком, заданным указанным компаратором. Он требует, чтобы все элементы массива были взаимно сравнимы указанным компаратором, т. е. для любой пары элементов (e1, e2) в массиве, c.compare(e1, e2) не следует бросать ClassCastException .

⮚ Чтобы отсортировать по возрастанию:

⮚ Чтобы отсортировать по убыванию:

Arrays . sort ( arr , Comparator . reverseOrder ( ) ) ; // или используйте `Collections.reverseOrder()`)

Мы также можем написать собственный компаратор, как показано ниже:

Он также предоставляет версию, которая сортирует указанный массив объектов между указанным диапазоном в соответствии с порядком, заданным указанным компаратором:

Результатом такой сортировки является стабильная сортировка, т. е. будет поддерживаться относительный порядок равных элементов. Он использует итеративный Сортировка слиянием что требует гораздо меньше, чем n.log(n) сравнения, когда входной массив частично отсортирован, в противном случае предлагается производительность традиционной сортировки слиянием, когда входной массив упорядочен случайным образом.

2. Сортировка массива с помощью Arrays.parallelSort() метод

Java 8 также предоставляет Arrays.parallelSort() который использует несколько потоков для сортировки, в отличие от Arrays.sort() который использует только один поток для сортировки элементов. Прототип parallelSort() похоже на sort() .

Это бьет Arrays.sort() когда общее количество элементов превышает определенный порог. Внутри любой массив размером меньше порогового значения сортируется с помощью Arrays.sort() . Порог рассчитывается с учетом параллелизма машины и размера массива. Общий пул ForkJoin используется для выполнения любых параллельных задач.

Следующая программа на Java сравнивает производительность Arrays.parallelSort() с Arrays.sort() на огромном наборе данных из 10 миллионов целых чисел:

Источник

Кофе-брейк #136. Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort(). В чем разница между интерфейсами List и Set?

Java-университет

Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort()

Кофе-брейк #136. Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort(). В чем разница между интерфейсами List и Set? - 1

Источник: FreeCodeCamp Благодаря этой публикации вы узнаете способы сортировки массива в Java по возрастанию или убыванию. В Java мы используем массивы для хранения набора переменных (с одинаковым типом данных) в одной переменной. Но иногда значения, хранящиеся в массиве, появляются в случайном порядке. Благодаря классу Arrays в Java у нас есть несколько способов управления массивами, в том числе их сортировки. Один из методов, которые мы будем использовать из класса Arrays , — это метод sort() , который сортирует массив в порядке возрастания. Для сортировки массива в порядке убывания используется метод reverseOrder() класса Collections в Java.

Как отсортировать массив в порядке возрастания в Java с помощью Arrays.sort()

Вот пример того, как мы можем использовать метод sort() для сортировки массива в порядке возрастания.

 import java.util.Arrays; class ArraySort < public static void main(String[] args) < int[] arr = < 5, 2, 1, 8, 10 >; Arrays.sort(arr); for (int values : arr) < System.out.print(values + ", "); // 1, 2, 5, 8, 10, >> > 

Первое, что мы сделали в приведенном выше примере, — это импортировали класс Arrays : import java.util.Arrays; . Так мы получили доступ ко всем методам класса Arrays . Затем мы создали массив с числами в случайном порядке: int[] arr = < 5, 2, 1, 8, 10 >; . Чтобы отсортировать этот массив в порядке возрастания, мы передали массив в качестве параметра методу sort() : Arrays.sort(arr); . Обратите внимание, что класс Arrays написан первым перед доступом к методу sort() с использованием записи через точку. Наконец, мы создали цикл и напечатали массив в консоли. В результате получился отсортированный массив: 1, 2, 5, 8, 10 . А сейчас давайте поговорим о сортировке массива по убыванию.

Как отсортировать массив по убыванию в Java с помощью Collections.reverseOrder()

Чтобы отсортировать массив в порядке убывания, следует использовать reverseOrder() , к которому можно получить доступ из класса Collections . Мы по-прежнему будем использовать Arrays.sort(); , но в этом примере он будет принимать два параметра — массив для сортировки и Collections.reverseOrder() .

 import java.util.Arrays; import java.util.Collections; class ArraySort < public static void main(String[] args) < Integer[] arr = < 5, 2, 1, 8, 10 >; Arrays.sort(arr, Collections.reverseOrder()); for (int values : arr) < System.out.print(values + ", "); // 10, 8, 5, 2, 1, >> > 

Первым делом мы импортировали классы Arrays и Collections , потому что мы будем использовать методы, предоставляемые этими классами. Затем мы создали массив чисел в случайном порядке: Integer[] arr = < 5, 2, 1, 8, 10 >; . Как можно заметить, мы использовали Integer[] вместо int[] , как в предыдущем примере. Иначе возникнет ошибка. Чтобы отсортировать массив по убыванию, мы сделали вот так: Arrays.sort(arr, Collections.reverseOrder()); . Первый параметр — это массив arr , который будет отсортирован в порядке возрастания. Второй параметр — Collections.reverseOrder() — затем изменит порядок отсортированного массива, чтобы он располагался в порядке убывания. При циклическом просмотре и печати массив будет выглядеть так: 10, 8, 5, 2, 1 .

Заключение

В этой статье мы обсудили сортировку массивов в Java — как их можно сортировать по возрастанию или по убыванию. Для этого мы можем использовать метод sort() , к которому можно получить доступ из класса Arrays . Метод sort() принимает массив для сортировки в качестве параметра. Чтобы отсортировать массив в порядке убывания, мы использовали метод reverseOrder() , предоставляемый классом Collections. Он передается в качестве второго параметра в метод sort() , чтобы отсортированный массив можно было переупорядочить в порядке убывания.

Java Collection. В чем разница между интерфейсами List и Set?

Источник: Rrtutors List и Set являются интерфейсами Java для расширения интерфейса Collection . В этой публикации мы рассмотрим ключевые различия между ними, а также варианты их применения.

Различия между интерфейсами Set и List в Java

Давайте определим ключевые различия между интерфейсами List и Set на основе следующих ключевых параметров:

Реализация

Индексация

Вы можете использовать ListIterator для перемещения по List как вперед, так и назад, но не по Set . Вместо этого используйте Iterator (который работает как с List , так и с Set ).

Порядок

Интерфейс Set не поддерживает какой-либо конкретный заданный порядок. Коллекция вида Set уже является отсортированной по своему правилу и ее просто так нельзя отсортировать. List — это упорядоченный список. Объекты хранятся в порядке их добавления в список. Доступ к элементам списка осуществляется по индексу.

Объект Null

List не имеют никаких ограничений и поддерживают добавление нулевых значений (Null values), в то время как Set допускает не более одного значения null.

Дубликаты

List могут содержать дубликаты, а Set — нет. Set не допускает дублирования элементов, поскольку все его элементы должны быть уникальными. Если вы вставите повторяющийся элемент в Set , существующее значение будет перезаписано.

Когда следует использовать List и Set?

Set — лучший выбор, когда вам просто нужно сохранить уникальные значения, поскольку он как раз для этого и предназначен. Но если вы хотите сохранить порядок вставки, несмотря на дублирование, лучше всего выбрать List .

Пример Set

 import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class ListExample < public static void main(String[] args) < Listal = new ArrayList(); al.add("Rohit"); al.add("Panjab"); al.add("Kamir"); System.out.println("My ArrayList Items: "); System.out.print(al); List ll = new LinkedList(); ll.add("Shobit"); ll.add("Raul"); ll.add("Ketel"); System.out.println("\n My LinkedList Items: "); System.out.print(ll); > > 

Пример List

 import java.util.HashSet; import java.util.Set; import java.util.TreeSet; public class SetExample < public static void main(String[] args) < int myList[] = ; Set dispSet = new HashSet(); try < for(int i = 0; iSystem.out.println(dispSet); TreeSet treeset = new TreeSet(dispSet); System.out.println("Sorting in Asceding order:"); System.out.println(treeset); > catch(Exception e) < e.printStackTrace(); >> > 

Источник

Читайте также:  Довиваться index php newsid добавление комментария
Оцените статью