Анализ Big-O с функциями внутри функций

Меня смущает, как работает Big-O при работе с функциями внутри функций (при анализе наихудшего случая). Например, что если у вас есть что-то вроде:

for(int a = 0; a < n; a++)
{
    *some function that runs in O(n*log(n))*
    for(int b = 0; b < n; b++)
    {
        *do something in constant time*
    }
}

Будет ли весь этот блок работать в O (n ^ 2 * log (n)), потому что в первом цикле для, у вас есть O (n) и O (n * log (n)), так что O (n * log (n)) больше, и поэтому тот, который мы берем? Или это O (n ^ 3 * log (n)), потому что у вас есть O (n) и O (n * log (n)) во внешнем цикле for?

Любая помощь ценится! Спасибо!

-121--1751172-

Как инициализировать двоичный семафор в C На странице «man» отображается, что даже если инициализировать семафор значением 1: sem_init (& mySem, 0, 1); Он все еще может быть увеличен до значения больше 1 с несколькими вызовами для...

На главной странице видно, что даже при инициализации семафора значением единицы:

sem_init(&mySem, 0, 1);

Он все еще может быть увеличен до значения больше 1 с несколькими вызовами

sem_post(&mySem);

Но в этом примере кода комментарий, кажется, думает по-другому:

sem_init(&mutex, 0, 1);      /* initialize mutex to 1 - binary semaphore */

Возможно ли инициализировать строго двоичный семафор в C?

Примечание: Причина этого вместо использования мьютекса в этом случае заключается в том, что sem_post и sem_wait могут вызываться различными потоками.

9
задан paxdiablo 20 September 2011 в 00:24
поделиться