Какова временная сложность метода java.util.Collections.sort()?
Я написал следующий класс:
public class SortingObjectsWithAngleField implements Comparator<Point> {
public int compare(Point p1, Point p2) {
double delta = p1.getAngle() - p2.getAngle();
if(delta == 0.00001)
return 0;
return (delta > 0.00001) ? 1 : -1;
}
}
Затем, в моем методе main()
, я создал List
, к которому добавляю некоторые объекты с полями "X" и "angle".
Затем я использую:
Collections.sort(list, new SortingObjectsWithAngleField());
Какова сложность такого метода сортировки?
Ответы
Ответ 1
Вы могли бы прочитать документы по типу Collections, но здесь это для вас:
Алгоритм сортировки является модифицированным mergesort (в котором слияние опущен, если самый высокий элемент в низкий подсписчик меньше минимального элемент в высоком подсписке). Эта алгоритм предлагает гарантированный n log (n) производительность.
Ваш компаратор не изменит эту сложность, если вы ничего не делаете с петлями над своей коллекцией, в которой вы этого не делаете.
Ответ 2
Вы должны найти его в API: n log (n).
Ответ 3
Взято из Collections.sort -
Алгоритм сортировки является модифицированным mergesort (в котором слияние опущен, если самый высокий элемент в низкий подсписчик меньше минимального элемент в высоком подсписке). Эта алгоритм предлагает гарантированный n * log (n) производительность