大O结构

时间:2015-10-09 02:57:13

标签: javascript big-o

在我发现的编码中,有没有人能指出我在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}}

1 个答案:

答案 0 :(得分:0)

big-O复杂度为O(n),其中nnumbers数组中元素的数量。

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次。