у меня размер контейнера будет увеличивается на каждой итерации.
Допустим есть n входных массивов и один выходной, при этом в цикле происходит операция над каждым массивом, сложность которой зависит от длины выходного массива, как это учесть?
поясни как сложность может зависеть от выходных данных?
Временная сложность не зависит от этого в общем случае
Как это учесть - тоже не понятно не зная алгоритма и его сути
ну допустим есть такая функция // v содержит отсортированные списки list<int> foo(vector<list<int>> &v) { list<int> res; for(list<int> &li : v) { res.merge(li); return res; } тут у merge, как говорит стандарт, сложность O(n+k), где n и k объединяемые списки, но n на каждой итерации увеличивается на k, и тут возник вопрос, это влияет в общем случае но сложность или нет?
странный вопрос... суммировать цикл?
в смысле суммировать цикл?
а относительно каких параметров вы хотите считать временную сложность алгоритма?
понял, только вопрос то в чем, понятно, что сложность будет m * (n + k), где m размер входного вектора, n - размер res, k - размер li, только n меняется на каждой итерации на k, разве это не влияет на сложность??
странно оценивать временную сложность относительно внутреннего параметра алгоритма, так что непонятно, при чем тут res
так размер res же напрямую влияет на время работы ф-ции merge
и что из этого следует?
вот смотрите for (int i = 0; i < n; ++i) for (int j = 0; j < i; ++j) if (a[i] < a[j]) swap(a[i], a[j]); вы задаёте вопрос: как оценивать сложность этого алгоритма, ведь внутренний цикл зависит от параметра i
сложность квадратичная. если n- число списков, то каждый n-й список добавит обработку не только своих элементов, но и дополнительный перебор всех накопленных элементов предыдущих n-1 списков,
благодарю добрый человек
стоп, а не m*n, где m общее к-во элементов?
мы ничего не знаем про элементы списка. усредненно считаем, что все списки равноценны на бесконечности.
для \sum_{i=1..n} (n-i)*s_i такая оценка бывает грубоватой. Скажем, \sum_{i=1..n} (n-i)*2^i = O(2^n) = O(\sum_{i=1..n} 2^i)
Обсуждают сегодня