Использование библиотеки Arrays для слияния сортирует массив int - PullRequest
1 голос
/ 21 апреля 2019

Я хочу использовать функцию

public static void sort(Object[] a)

Чтобы отсортировать массив int, но я не уверен, как это сделать, чтобы точно знать, что он использует сортировку слиянием, а не какую-либо другую сортировку.

Вот документация по Java: https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

И ниже, я думаю, будет правильная реализация функции для использования сортировки слиянием.

 public static void main(String[] args) {
     int arr[] = { 3, 2, 4, 1, 99, 30, 5, 3 };
     Arrays.sort(arr);
 }

Это было бы правильно? И далее я хотел указать индекс, откуда начать сортировку и т. Д. С

sort(Object[] a, int fromIndex, int toIndex)

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

Ответы [ 3 ]

1 голос
/ 21 апреля 2019

Метод Arrays.sort обычно использует быструю сортировку для массивов примитивов и сортировку слиянием для массивов объектов.

Поэтому, чтобы использовать сортировку слиянием, я думаю, вы должны объявить свой массив как массив объектов Integer, например,

// Unsorted array
Integer[] a = { 2, 6, 3, 5, 1 };
0 голосов
/ 21 апреля 2019

Существует устаревшая реализация Merge Sort в служебном классе Arrays, инкапсулированном внутри LegacyMergeSort class.

Как уже упоминалось, по умолчанию Arrays.sort не будет его использовать. Так что вам нужно дать команду jvm использовать его. Это согласно документации Java:

  Old merge sort implementation can be selected (for
  compatibility with broken comparators) using a system property.

Системным свойством является java.util.Arrays.useLegacyMergeSort=true, и вы можете установить его, используя java -Djava.util.Arrays.useLegacyMergeSort=true jar или System.setProperty("java.util.Arrays.useLegacyMergeSort",true);

0 голосов
/ 21 апреля 2019

К сожалению, Arrays.sort использует оба! Похоже, что для вашей целочисленной реализации она использует быструю сортировку.

https://cafe.elharo.com/programming/java-programming/why-java-util-arrays-uses-two-sorting-algorithms/

...