Один из подходов, который мне нравится, это заменить код временем выполнения, например,
val_buffer[0] = '\0';
strncat(val_buffer, value, sizeof(val_buffer) - 1);
val_buffer[sizeof(val_buffer) - 1] = '\0';
становится
O(1)
O(n) (* Assume the size of value is the size of the input *)
O(1)
петля
for each k in value {
strlen(value)
}
становится
O(n) {
O(n)
}
или что-то такое обозначение, которое вы можете затем сделать в O(n) * O(n) = O(n^2)
. Затем вы можете суммировать все перечисленные биг-о, чтобы получить вашу окончательную сложность.
Подобный трюк состоит в том, чтобы сначала связать весь ваш код с количеством выполненных работ, а затем удалить код, выполняющий реальную работу, оставив только значения. Затем с помощью простой математики, чтобы упростить счет. То есть.,
count = 0;
for (i = 0; i < k; i++) {
count++
}
легко заменить на count = k
.