Iva*_*vak 6 algorithm math big-o
所以我只是搞乱了jsfiddler,并使用以下算法来计算,sqrt而不使用Math.sqrt:
var counter = 0;
function sqrt(x){
var a, b;
a = 1;
b = x;
while (Math.abs(a - b) > 0.1){
a = (a + b) / 2;
b = x / a;
counter++;
}
return a;
}
var x = 64;
var result = sqrt(x);
alert('Result = ' + result + ' (number of iterations ' + counter + ')');
Run Code Online (Sandbox Code Playgroud)
的jsfiddle:
你能帮我确定一下上述算法的Big O复杂度吗?我试过并在O(1/2*LogN)附近结束但我不确定并且实际上需要一些帮助.谢谢
如上所述 - 巴比伦方法的复制品.我稍微更新了代码以反映error threshold如下:
function sqrt(x){
var a, b, error;
error = 0.1;
a = 1;
b = x;
while (Math.abs(a - b) > error){
a = (a + b) / 2;
b = x / a;
counter++;
}
return a;
}
Run Code Online (Sandbox Code Playgroud)
而BigO的结果是:O(log(log(x/error))
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |