func2
выполняется за линейное время, т. Е. O(n)
Объяснение:
Легко сказать, что временная сложность метода reverseArray линейна, т. Е. big-Theta(n)
давайте предположим, что func2
вызывается с n = 8
;
Вызовами reverseArray будут: -
reverseArray(arr, 1)
reverseArray(arr, 2)
reverseArray(arr, 4)
reverseArray(arr, 8)
Таким образом, общее время выполнения = 1 + 2 + 4 + 8 =15, то есть 2 * 8 - 1
Так, если бы n было степенью 2, общее время выполнения = O(2*n - 1)
Если бы n не было степенью 2, общее время работы было быbe = O(2*K - 1)
, где K - наивысшая степень 2, меньшая n.Мы можем с уверенностью сказать, O(2*K - 1) = O(2*n - 1)
[поскольку, O является верхней границей]
O(2*n - 1) = O(n)
Для тета-записи нижняя граница равна O(2*K - 1)
, где K - наивысшая степень 2 меньшечем н.Следовательно, сложность времени = Theta(2^(floor(log(n)base2)+1))