Я предполагаю, что вы используете массив, так как вы говорите о быстрой сортировке, поэтому просто добавление элемента потребовало бы найти место для его вставки (O (log n)), а затем фактически вставить его (O (n) ) на общую сумму O (n). Просто добавив его в конец, а затем прибегнув к полному списку, определенно не тот путь.
Однако, если это будет частая операция (т. Е. Если вам нужно будет добавлять элементы при сохранении отсортированного свойства), то вы будете платить O (n ^ 2) за добавление еще n элементов в список. Если вы измените свое представление на сбалансированное двоичное дерево, оно упадет до O (n log n) для других n вставок, но поиск элемента по индексу станет O (n). Если вам никогда не нужно этого делать, а просто перебирайте элементы по порядку, дерево определенно поможет.
Возможный интерес представляет индексируемый скиплист , который при небольшой стоимости хранения имеет O (log n) вставок, удалений, поисков и поиска по индексу. Посмотрите, это может быть именно то, что вы ищете здесь.