有沒有時間複雜度為log2n1的程式

2021-03-19 18:33:16 字數 3463 閱讀 1423

1樓:浩乾大大

。。。寫一個for迴圈,迴圈log2(n-1)次

這個程式為什麼時間複雜度是log2n呢 請各位指教

2樓:匿名使用者

2的log n次方等於n,i=i*2中的數字2就代表log中的底,如果i=i*3,那麼底就是3。意思就是i要經過logn次迴圈運算才能達到停止條件,也就是i>n

時間複雜度log是怎麼計算出的,

3樓:匿名使用者

i每迴圈一次就乘了2,知道當i>=n時迴圈結束,迴圈m次有2^m>=n,得到m=log2n。

4樓:匿名使用者

時間複雜度

同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間複雜度和空間複雜度來考慮。

1、時間複雜度

(1)時間頻度

一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。

一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。

(2)時間複雜度

在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。

一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。

在各種不同演算法中,若演算法中語句執行次數為一個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。

按數量級遞增排列,常見的時間複雜度有:

常數階o(1),對數階o(log2n),線性階o(n),

線性對數階o(nlog2n),平方階o(n2),立方階o(n3),...,

k次方階o(nk),指數階o(2n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

2、空間複雜度

與時間複雜度類似,空間複雜度是指演算法在計算機內執行時所需儲存空間的度量。記作:

s(n)=o(f(n))

我們一般所討論的是除正常佔用記憶體開銷外的輔助儲存單元規模。

下面程式段的時間複雜度為_____。(n>1)

5樓:匿名使用者

o(n^2)

因為子層k迴圈次數為n,時間複雜度為n

父層j迴圈次數為n,故時間複雜度為n

總體時間複雜度為an*n+b*n+c=o(n*n)=o(n^2)

6樓:匿名使用者

o(n*log(n))

外迴圈由於j是以copy2倍為速度指數級增長的,所以在o(log(n))的時間結束(沒有內迴圈時)。

而每次外迴圈執行一次,都完整的執行了內迴圈。

內迴圈完整執行一次需要時間o(n)

所以綜合起來便是每次外迴圈中內迴圈執行的時間乘以外迴圈所用的時間,即o(n*log(n))

二分法的時間複雜度為o(log2n)是什麼意思

7樓:匿名使用者

網頁連結

你可以看看我的上面這個部落格

由於二分查詢每次查詢都是從陣列中間切開查詢,所以每次查詢,剩餘的查詢數為上一次的一半,從下表可以清晰的看出查詢次數與剩餘元素數量對應關係

表-查詢次數及剩餘數

第幾次查詢    剩餘待查詢元素數量

1                    n/22                    n/(2^2)3                    n/(2^3)…                    …k                    n/(2^k)從上表可以看出n/(2^k)肯定是大於等於1,也就是n/(2^k)>=1,我們計算時間複雜度是按照最壞的情況進行計算,也就是是查到剩餘最後一個數才查到我們想要的資料,也就是

n/(2^k)=1

=>n=2^k

=>k=log2n

所以二分查詢的時間複雜度為o(log2n)

8樓:食人魚肉前

二分查詢基本思路是先確定該區間的中間點,然後比較,再一半中再找中間點比較……直到找到.設中間點總數:n,平均查詢長度為(n+1)∕ n×㏒2﹙n+1﹚ -1 ≈㏒2﹙n+1﹚-1

在應用極限化簡就是log2(n)

二分法的時間複雜度為o(log2n)是什麼意思?

9樓:不是7個漢字嗎

二分法的基本思想如下:

假設資料是按升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功;若x小於當前位置值,則在數列的前半段中查詢;若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。

由於是陣列是預先排序好的,所以可以採用折半查詢的方式,每次拋掉待查詢部分的一半

這樣,長度為n的陣列,只需要log2n次查詢即可,2是對數的底。

例如,長度為7的陣列,最多只需要3次就可以找到o(log2n)只是表示是log2n同一數量級,因為有個取整的問題,而且也有可能在查詢過程中就已經找到(也就是某個折半查詢點正好是待查詢資料),這樣o(log2n)就是一個上限

10樓:

看資料結構或者演算法導論去。。。

複雜度o(nlog2n)怎麼計算的?

11樓:匿名使用者

for(int j=1; j<=n; j*=2)這個迴圈最終執行的次數假設為x,則x次的時候j=2^x 。

當j>n時停止執行,於是2^x>n ,則可以認為該迴圈一共執行了log2(n)次。

所以該迴圈的時間複雜度為o(log2(n)),簡記為o(log n) ,忽略掉2的底數。

方法:1、首先,看外迴圈for(i=0;i2、再看內部迴圈,for(j=1;jn===》x=log2(n)。

3、如果把兩個迴圈合在一起看,也就是一共迴圈了n個x次,也就是log2(n)。

時間複雜度o(log2^n)的迴圈語句

12樓:匿名使用者

錯了 明顯的程式

i的初始值應當為1.

這個迴圈執行的次數為以2為底n的對數次

13樓:匿名使用者

....就相當於2^m = n兩邊取以2為底的對數。就是m的值。

民事案件的發生到訴訟有沒有時間限制

提起民事訴訟在時間上有嚴格的規定。法律上的時間概念叫訴訟時效,指當事人向人民法院請求保護民事權利的有效時間。訴訟時效期間屆滿後,當事人向人民法院提起民事訴訟就喪失了勝訴權。訴訟時效一般分為幾種 1 一般訴訟時效 指除法律有特殊規定外,都應適用的一般的訴訟時效。民法典 第188條規定,向人民法院請求保...

拔罐,按摩有沒有時間限制,拔罐後多長時間可以做穴位按摩

拔罐,按摩有沒有時間限制?拔罐沒有特殊的時間限制。一般在人疲勞或在下午的時候拔罐對身體有一定的益處。但是切記刮痧 拔罐24小時不能洗澡,要注意保暖。這三樣不能長時間的做,一般情況下一月一次,如果上火嚴重,一週一次就可。火罐刮痧多了,對 也有一定的傷害。拔罐時不易留罐時間過長 一般拔罐時間應掌握在8分...

辦房子產權證有沒有時間限制,辦理房產證時間有什麼規定

您好,房產證的辦理期限通常是以合同中約定的期限為主的,但如果房屋買賣合同中並沒有對此作出約定的,一般分兩種情況討論 1 商品住房若尚未建成的,房產證的辦理期限是自房屋交付使用之日起90日內 2 商品房若已經竣工完成的,房產證的辦理期限是自合同訂立之日起90日內。辦理房產證時間有什麼規定 第三十二條規...