1. 程式人生 > >EZ娛樂源碼出售時間復雜度和空間復雜度

EZ娛樂源碼出售時間復雜度和空間復雜度

end 規模 lse fun 註意 art QQ 級別 href

時間復雜度
常見的時間復雜度有EZ娛樂源碼出售請添加鏈接描述(www.1159880099.com) QQ1159880099:常數階O(1),對數階O(log2n),線性階O(n),線性對數階O(nlog2n),平方階O(n2),立方階O(n3), k次方階O(nk),指數階O(2n),隨著問題規模不斷擴大,上述時間復雜度不斷地增大,算法執行效率越來越低。

一、常數階(O(1))

<?php
//從上到下所有的代碼執行一次
$a = 123;
$b = 456;
$c = $a + $b;
echo $c;
二、對數階(O(log2n))

<?php
$num = 1;
while($num < n){

$num = $num * 2;
//在while循環裏面是順序的執行(時間復雜度為O(1))
}
三、線性階(O(n))

<?php
for($i = 0; $i < 9; $i++){
//順序執行。時間復雜度為O(1)
}
四、平方階(O(n2))

<?php
for($i = 0; $i < 9; $i++){
for($j = 0; $j < 9; $j++){
//時間復雜度O(1)
}
}
五、立方階(O(n3))

<?php
for($i = 0; $i < 9; $i++){
for($j = 0; $j < 9; $j++){
for($j = 0; $j < 9; $j++){

//時間復雜度O(1)
}
}
}
空間復雜度
一、遞歸情況

function binSearch($arr, $key, $start, $end)
{
$mid = ceil(($start+$end) / 2);
if($arr[$mid] < $key){
binSearch($arr, $key, $mid+1, $end);
}else if($arr[$mid] > $key){
binSearch($arr, $key, $start, $mid-1);
}else{
return $mid;
}
}
註意:

1、遞歸情況下的空間復雜度:如果每次遞歸的輔助空間為常數,則空間復雜度為O(N)。

2、遞歸的二分查找的空間復雜度:遞歸深度是log2^n,每次遞歸的輔助空間為常數,所以空間復雜度為O(log2n)。

二、叠代情況

function binSearch($arr, $key){
$start=0;
$end=count($arr)-1;
while($start <= $end){
$mid = ceil(($start+$end)/2);
if($arr[$mid] < $key){
$start = $mid+1;
}else if($arr[$mid] > $key){
$end = $mid-1;
}else{
return $mid;
}
}
}
在這個過程中,輔助空間為常數級別,所以空間復雜度為O(1)(有一個輔助變量$mid)

總結
時間復雜度:

1、用常數1來取代所有時間的所有加法常數,比如這個程序被執行了三次應該是O(3),3是常數直接用1取代為O(1);

2、在修改後的運行次數中,只保留最高階項,比如O(n^2+3n+3),最後的時間復雜度是O(n^2),2是常數直接用1替代;

3、如果最高階項不存在1的常數,則去除最高階項的常數,比如O(2n^2+1),最後的時間復雜度是O(n^2)。

空間復雜度:

1、包括程序代碼所占用的空間、輸入數據所占用的空間、輔助變量所占用的空間。

EZ娛樂源碼出售時間復雜度和空間復雜度