Я получил 2 вложенных цикла, я вычисляю новое значение для nrResults
при каждом выполнении внутреннего цикла for (который будет повторять цикл nnrResults
- 2 раза).
Сложность времени должна быть порядка O(n)
, поскольку nrResults
зависит от значения n
.
Но nrResults
уменьшается в каждом цикле внешнего цикла for (т.е. firstNext * j
растет с каждой итерацией)
Является ли временная сложность внутреннего цикла foor по-прежнему O(n)
, хотя nrResults
будет продолжать уменьшаться на протяжении всего выполнения?
Заранее спасибо.
for(int j = 1; j < B; j++) // General case
{
nrResults = n - (firstNext * j);
result = codedInput[0] + results[minI = minIndex(results, 0 + firstNext, nrResults + firstNext)];
for(int i = 1; i < nrResults; i++)
{
if( (i + firstNext) > minI)
results[i] = codedInput[i] + results[minI = minIndex(results, i + firstNext, nrResults + firstNext)];
else
results[i] = codedInput[i] + results[minI];
if(results[i] < result)
result = results[i];
}
}