Одна из вещей, которую вы должны понять, имея дело с нотацией O, состоит в том, что часто очень важно понять, что такое n . Если n относится к чему-то, что вы можете контролировать (например, количество элементов в списке, которое вы хотите отсортировать), то имеет смысл внимательно посмотреть на это.
В большинстве реализаций кучи n - это количество смежных кусков памяти, которые обрабатывает менеджер. Это определенно не что-то, как правило, под контролем клиента. Единственный n , который действительно контролирует клиент - это размер порции памяти, которую он хочет. Часто это не имеет никакого отношения к количеству времени, которое занимает распределитель. Большой n может быть распределен так же быстро, как маленький n , или это может занять гораздо больше времени, или он может быть даже незаметным. Все это может измениться для того же n в зависимости от того, как поступили предыдущие выделения и освобождения от других клиентов. Так что на самом деле, если вы не реализуете кучу, тогда правильный ответ - это детерминированный .
Вот почему программисты в реальном времени стараются избегать динамического выделения (после запуска).