[英]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)
,其中n
是numbers
數組中的元素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.