Какова алгоритмическая сложность преобразования массива в set, через Set(array)?
==================================================================================

 Решаю задачки, непонятно, как учесть сложность преобразования array в set.  

По идеи Set() проходится циклом по всем элементам, тоесть добавляет O(n).  

Или же он как-то работает напрямую с памятью? 

 Напрямую, накривую - какое отношение это имеет к алгоритмической сложности?  

 O(n). 

 Нужно сделать *set.Add()* для всех элементов *array* - это дает **O(n)**. *set.Add()* проверяет на уникальность - это в прямолинейном исполнении еще **O(n)**. Конечно на всех современных движках *Set* оптимизирован до HashTable. В идеальном мире HashTable.Add имеет сложность **O(1)**, но мы же не в идеальном, на практике думаю можно рассчитывать на **O(log(n))** с учетом небходимых периодических аллокаций с ростом *Set*. Таким образом, *по моим сугубо личным, бездоказательным оценкам*, рассчитывать можно на **O(n*log(n))**  

И, да, я *убежден* что быстрее O(n) быть не может. Преобразовать последовательный массив в хештаблицу быстрее O(n) невозможно даже теоретически. 

 Вопрос в том, в каких операциях считать сложность.