2014-01-19 18 views

ответ

5

От официального docs

Я заметил, что есть в основном два подхода. Таким образом, это зависит от того, что вы сортируете и какой перегруженный метод от sort семейства методов, которые вы вызываете.

Документов отметить, что для примитивных типов, таких какlong, byte (Пример: static void sort(long[])):

Алгоритма сортировки является настроен быстрой сортировкой, приспособленной от Jon L. Bentley и М. Дугласа Макилры " Engineering a Sort Function ", Практика и опыт в области программного обеспечения, Vol. 23 (11) P. 1249-1265 (ноябрь 1993). Этот алгоритм обеспечивает производительность n * log (n) во многих наборах данных , которые приводят к снижению производительности на быстродействие до квадратичной производительности.

Для типов объектов: (Пример: void sort(Object list[]))

Гарантированное O (NlogN) исполнение

Алгоритм сортировки представляет собой модифицированный слиянием (в котором слияние опущен если самый высокий элемент в нижнем подсписке меньше, чем нижний элемент в верхнем подсписке ). Этот алгоритм обеспечивает гарантированную производительность n * log (n) .

Надеюсь, что это поможет!

+0

Можете ли вы дать мне ссылку на документы? Благодарю. – user3212622

+0

http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html приветствуется! – pinkpanther

+1

Я также вижу «Алгоритм сортировки - это модифицированная слияния (в которой слияние опущено, если наивысший элемент в нижней подсписке меньше самого нижнего элемента в высоком подсписке). Этот алгоритм предлагает гарантированную производительность n * log (n). «Похоже, что алгоритм зависит от того, что вы сортируете ... – csmckelvey

3

Arrays.sort() использует Tim sort - O (N log N) для массива объектов и QuickSort для массивов примитивов - снова O (N log N).

Вот удивительное сравнение алгоритмов сортировки: http://www.sorting-algorithms.com/

Смежные вопросы