Связанный список будет O(n)
при поиске места, куда должен идти новый объект, но постоянным при его вставке.
Динамический список массивов / массивов будет O(log(n))
найти правильное место, но наихудший случай вставки O(n)
, так как вам нужно будет переместить все значения за точку вставки на одну.
Если вам не нужен произвольный доступ или, по крайней мере, до конца, вы можете использовать кучу, O(log(n))
вставку, после того, как вы закончите, вы можете извлечь их в O(log(n))
каждый,так что O(n*log(n))
для всех из них.
И, возможно, есть (вероятно, основанная на дереве) структура, которая может сделать все это в O(log(n))
(красно-черное дерево?).
Итак, в конце концов, все сводитсякак именно вы хотите его использовать.
Редактировать: Посмотрел красно-черные деревья и похоже, что они O(log(n))
search ("amortized O(1)
", согласнов Википедии), вставки и удаления, так что это может быть то, что вы хотите.