簡體   English   中英

大O結構

[英]Big O structure

有人能指出我發現的這個編碼中大 O 符號的位置嗎? http://jsfiddle.net/neekit_rama/6qmoLbex/

<h1 id="title">Array operations with random functions & Big o notation Analysis</h1>

Enter an element to search(1-100):

<input type="text" id="myTextField1"/>

<input type="submit" id="byBtn" value="SearchArray" onclick="StoreArray()"/> <br>

Number of comparisions:<input type="text" id="myTextField2"/>

JavaScript:

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;

}

大 O 復雜度為O(n) ,其中nnumbers數組中的元素numbers

O(n)復雜度意味着算法的縮放比例與n成正比。 隨着n變大,該函數將相應地花費更長的時間來執行。

計算復雜性的一種簡單方法(對於像這樣的基於循環的簡單算法)是通過計算比較次數:

for (var i = 0; i < numbers.length; i++) {
    count++;
    if(numbers[i]==Element)
    ...

比較numbers[i]==Element可能是循環中numbers.length最大的操作,在最壞的情況下會執行numbers.length次。

在最好的情況下, Element將是數組中的第一項,因此比較只會執行 1 次,或O(1) 發生這種情況是因為在找到匹配項時終止循環的return語句。

在最壞的情況下, Element將是數組中的最后一項,或者根本不存在,因此將執行n次比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM