【发布时间】:2018-05-09 05:14:48
【问题描述】:
您好,我一直在研究并尝试学习如何检查某些算法的时间复杂度。我看过这个视频,很有帮助。
话虽如此,我还是想知道并开始尝试计算出某些算法的最坏情况和平均情况。
1
function sqrt(num) {
guess = num / 3;
do {
lastGuess = guess;
guess = (num / guess + guess) / 2;
while(Math.abs(lastGuess - guess));
return guess; /
我说这是 O(n) 是否正确,我的推理是因为我们循环直到找到一个近似值。
2
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 虽然我相信下面的 sn-p 它是 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");
}
再次感谢
【问题讨论】:
标签: javascript arrays time time-complexity big-o