在我发现的编码中,有没有人能指出我在Big O符号所在的方向? http://jsfiddle.net/neekit_rama/6qmoLbex/
function randomIntInc (low, high) {
return Math.floor(Math.random() * (high - low + 1) + low);
}
function StoreArray(){
var numbers = new Array(100);
for (var i = 0; i < numbers.length; i++) {
numbers[i] = randomIntInc(1, 100)
}
var element = document.getElementById('myTextField1').value;
var c=SearchArray(numbers,element);
var t= document.getElementById('myTextField2');
myTextField2.value=c;
}
function SearchArray(numbers, Element)
{
var count=0;
for (var i = 0; i < numbers.length; i++) {
count++;
if(numbers[i]==Element)
{
alert('Element found!!.');
return count;
}
}
alert('Element not found!!.');
return count;
}
JavaScript:
{{1}}
答案 0 :(得分:0)
big-O复杂度为O(n)
,其中n
是numbers
数组中元素的数量。
O(n)
复杂性意味着算法与n
成比例。随着n
越大,该函数将花费相应更长的时间来执行。
通过计算比较次数,一种简单的方法来计算复杂性(对于这样一个简单的基于循环的算法):
for (var i = 0; i < numbers.length; i++) {
count++;
if(numbers[i]==Element)
...
比较numbers[i]==Element
可能是循环中最昂贵的操作,并且在最坏的情况下将执行numbers.length
次。
在最好的情况下,Element
将是数组中的第一项,因此比较将仅执行一次,或O(1)
。发生这种情况是因为return
语句在找到匹配时终止循环。
在最坏的情况下,Element
将是数组中的最后一项,或根本不存在,因此比较将执行n
次。