Я пытаюсь прояснить некоторые вещи, связанные с сложностью некоторых операций TreeSet. На Javadoc он говорит:Вычислительная сложность операций TreeSet в Java?
«Эта реализация обеспечивает гарантированно журнала (п) затраты времени для основных операций (добавить, удалить и содержит).»
Пока все хорошо. Мой вопрос: что происходит на addAll(), RemoveAll() и т.д. Здесь Javadoc для Set говорит:
«Если указанный набор также набор, операция addAll эффективно изменяет этот набор так, чтобы его значение объединение двух наборов. "
Это просто объяснение логического результата операции или подсказка о сложности? Я имею в виду, если два набора представлены, например, красно-черных деревьев было бы лучше как-то присоединиться к деревьям, чем «добавить» каждый элемент одного к другому.
В любом случае, есть ли способ объединить два набора TreeSets в один с сложностью O (logn)?
Заранее спасибо. :-)
Ответ на полученные ответы: Я не могу это понять. Предположим, у вас есть два SortedSets, которые не имеют перекрывающихся элементов и представлены красно-черными деревьями. Почему вы не можете присоединиться к ним, так как операция «join» в красно-черных деревьях берет O (log (n + m)) время? –