2012-03-21 4 views
1

Я использую Collection.sort(Array<objectX>, Comperator<objectX>) в java/Android.Как реализована функция Collection.sort?

В моем компиляторе я сравниваю два объекта, используя их идентификатор.

Как узнать, в каком методе этот вид сделан? (quicksort, mergesort ...)?

+0

http://stackoverflow.com/questions/732522/how-do-you-compare-2-items-in-a- generic-list –

ответ

4

Технически говоря, какой алгоритм использовать не указывается (другими словами, это специфичная среда исполнения).

От the documentation:

Например, алгоритм, используемый sort не должен быть слиянием, но он должен быть устойчивым .

На практике это, как правило, выбирает один метод сортировки нескольких основанного на длине списка и т.д. В стандартной реализации от Sun/Oracle он выбирает между сортировкой вставок (если длиной меньше, чем 7) и merge sort иначе.

+1

Начиная с Java 7, он использует нечто более удивительное (хотя и намного сложнее), называемое TimSort. –

+0

Ах. Приятно знать. :-D – aioobe

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