Привет, я изучал и пытался научиться проверять временную сложность некоторых алгоритмов. Я видел это видео, которое было очень полезно.
Это, как я сказал, я подумал и начал пытаться разобраться в случае с Worsts и средним случаем определенных алгоритмов.
function sqrt(num) {
guess = num / 3;
do {
lastGuess = guess;
guess = (num / guess + guess) / 2;
while(Math.abs(lastGuess - guess));
return guess; /
Правильно ли я говорю, что это O (n), мои рассуждения - это то, что мы зацикливаемся до тех пор, пока не будет найдено приблизительное значение.
function max(numArray)
{
// copy the given array
nums = numArray.slice();
// base case: if we're at the last number, return it
if (nums.length == 1) { return nums[0]; }
// check the first two numbers in the array and remove the lesser
if (nums[0] < nums[1]) { nums.splice(0,1); }
else { nums.splice(1,1); }
// with one less number in the array, call the same function
return max(nums);
}
От пользователя спасибо в ссылке, он вычисляет наибольшее число в массиве. Можно ли с уверенностью сказать, что временная сложность в этом случае равна O(n)
поскольку наибольшее число может быть самым последним, и, следовательно, почему O(n)
?
# 3 Хотя я верю в следующий фрагмент, это O (n), так как для значения sin мы должны зацикливать весь массив.
function mySin(x, iterNum) {
var mxx = -x*x;
var sin = 1;
var n = 0;
var term = 1;
for (var i = 1; i <= 2*iterNum; i++) {
n = n + 2;
term = term * mxx / ( n*(n+1) );
sin = sin + term
}
sin = x*sin;
console.log(sin + " = my function.");
console.log(Math.sin(x) + " math.sin");
}
еще раз спасибо
Для второго вы правы: O(n)
поскольку yu нужно пересечь n
элементов, чтобы найти максимум. Однако в первом случае у ypu нет ничего, что изменилось бы на вашем входе. Это всегда займет несколько шагов, пока вы не нажмете на догадку, которая как бы не зависит от размера вашего номера. Поэтому это скорее O(1)
. Например, эти цифры имеют только одну цифру, но для каждого алгоритма используется другое количество итераций:
sqrt(9) // 1 iteration
sqrt(3) // a few iterations
Можно также сказать, что мы не можем предсказать временную сложность первого.