當前位置:首頁 » 操作系統 » 演算法復雜度為n的演算法

演算法復雜度為n的演算法

發布時間: 2023-01-23 08:51:20

演算法的時間復雜度O(n)到底怎麼算

看循環或者遞歸的層數。

比如該函數為O(n)

intf(intx,inty)
{
inti,j;
for(i=0;i<x;i++)printf("%d ",y);
}

而該函數為O(n2)

intf(intx,inty)
{
inti,j;
for(i=0;i<x;i++)for(j=0;j<y;j++)printf("%d ",y);
}

Ⅱ 設計n個數的排序演算法,並要求計算演算法復雜度

冒泡排序的演算法時間復雜度上o(n^2
)
冒泡排序是這樣實現的:
首先將所有待排序的數字放入工作列表中。
從列表的第一個數字到倒數第二個數字,逐個檢查:若某一位上的數字大於他的下一位,則將它與它的下一位交換。
重復2號步驟,直至再也不能交換。
冒泡排序的平均時間復雜度與插入排序相同,也是平方級的,但也是非常容易實現的演算法。
選擇排序
選擇排序是這樣實現的:
設數組內存放了n個待排數字,數組下標從1開始,到n結束。
i=1
從數組的第i個元素開始到第n個元素,尋找最小的元素。
將上一步找到的最小元素和第i位元素交換。
如果i=n-1演算法結束,否則回到第3步
選擇排序的平均時間復雜度也是o(n^2)的。

Ⅲ 某演算法的時間復雜度為O(n),表明該演算法的:

C、執行時間與n成正比。

A選項,演算法的時間復雜度與問題規模沒有任何關系。故A選項錯誤。

B選項,任何演算法的執行時間都幾乎不可能完全等於。故B選項錯誤。

C選項,如果一個演算法的時間復雜度為,的值增加,的值也會隨之增加,那麼執行時間肯定就是與成正比的。故C選項正確。

D選項,一個演算法的時間復雜度與這個問題的數據規模沒有關系,故D選項也錯誤。



(3)演算法復雜度為n的演算法擴展閱讀:

演算法的時間復雜度通常用大O符號表述,定義為T[n] = O(f(n))。稱函數T(n)以f(n)為界或者稱T(n)受限於f(n)。

如果一個問題的規模是n,解這一問題的某一演算法所需要的時間為T(n)。T(n)稱為這一演算法的「時間復雜度」。當輸入量n逐漸加大時,時間復雜度的極限情形稱為演算法的「漸近時間復雜度」。

Ⅳ 求計算演算法的復雜度 (Python寫的邏輯)

(a) 演算法復雜度為O(n),因為只有一個while循環,且i<n,所以復雜度是線性級,僅跟n有關
(b) 演算法復雜度為O(n²),實際上演算法復雜度為nxn/2 = n²/2,因為有for循環的嵌套
(c) 演算法復雜度為O(n),因為只有while循環,盡管裡面i=ix2,但是這是常數級操作
(d) 演算法復雜度為O(log i),這是對數級操作,每次i除以2,所以是log(i)base(2)
(e) 演算法復雜度為O(n log n)
(f) 演算法復雜度為O(2^i),這是一個遞歸演算法,為指數級
(g) 演算法復雜度為O(n 2^n),這是一個交換數據的演算法,是一個遞歸+一個for 循環

Ⅳ 時間復雜度o(nlogn)的演算法是什麼

時間復雜度o(nlogn)的演算法是採用「分治思想」,將要排序的數組從中間分成前後兩個部分,然後對前後兩個部分分別進行排序,再將排序好的兩部分合並在一起,這樣數組就有序。

每次劃分區域都選擇中間點進行劃分,所以遞歸公式可以寫成:T(n) = T(n/2) + T(n/2) + n, T(1) = C(常數) //每次合並都要調用Merge()函數,時間復雜度為O(n),等價T(n) = 2kT(n/2k) + k * n, 遞歸的最終狀態為T(1)即n/2k = 1,所以k = log2n。

原理分析:

1、運用了分治的思想。選取分區值,將待排序列分為兩個前後兩部分,前部分數據元素的值小於等於分區值,後部分的數據元素的值大於等於分區值;繼續對前後兩部分分別進行分區,直到分區大小為1。

2、交換操作的執行次數可以由時間復雜度分析過程得出,Merge()中總的交換次數為n * logn,因為不管兩個子序列的大小,子序列中的各個元素都會先放入臨時數組temp中,再重新放回原序列;比較操作的次數小於等於交換操作次數,最大交換次數為n * logn。

Ⅵ 【演算法筆記】演算法的平均時間復雜度A(n)的公式及示例

演算法平均時間復雜度計算公式

其中:

舉例:檢索問題,數組 有 個元素,每個元素為從1到n的整數。若待檢索元素在 中(例如1,2,3,4,5),則比較次數為其本身。若待檢索元素位於 的空隙中(例如0.5,1.5,2.5),則比較次數為 ,也就是從頭到尾比較一遍。若位於 和位於 的空隙的待檢索元素數量各佔一半,檢索的平均時間復雜度是多少?

位於 的情況:假設 在 的概率為 ,則 在每個位置的概率為 ,若 的值為 ,則需要比較 次。平均時間復雜度為

位於 的空隙的情況: 不在 的概率為 ,每種情況都要比較 次,則該情況的平均時間復雜度為

綜上,結合等差數列求和公式有:

當 ,

Ⅶ 如何計算演算法復雜度

問題一:程序中的時間復雜度是怎麼計算的? 演算法復雜度的介紹,見網路:
ke./view/7527
時間復雜度
時間頻度
一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為T(n)。
計算方法
1. 一般情況下,演算法的基本操作重復執行的次數是模塊n的某一個函數f(n),因此,演算法的時間復雜度記做:T(n)=O(f(n))
分析:隨著模塊n的增大,演算法執行的時間的增長率和f(n)的增長率成正比,所以f(n)越小,演算法的時間復雜度越低,演算法的效率越高。
2. 在計算時間復雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出T(n)的同數量級(它的同數量級有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n!),找出後,f(n)=該數量級,若T(n)/f(n)求極限可得到一常數c,則時間復雜度T(n)=O(f(n))
例:演算法:
for(i=1;i>

問題二:如何計算演算法的時間復雜度 求解演算法的時間復雜度的具體步驟是:⑴找出演算法中的基本語句;演算法中執行次數最多的那條語句就是基本語句,通常是最內層循環的循環體。⑵計算基本語句的執行次數的數量級;只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函數中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的系數。這樣能夠簡化演算法分析,並且使注意力集中在最重要的一點上:增長率。⑶用大Ο記號表示演算法的時間性能。將基本語句執行次數的數量級放入大Ο記號中。如果演算法中包含嵌套的循環,則基本語句通常是最內層的循環體,如果演算法中包含並列的循環,則將並列循環的時間復雜度相加。例如:for(i=1;i 問題三:C語言演算法的時間復雜度如何計算啊? 看看這個 每個循環都和上一層循環的參數有關。 所以要用地推公式: 設i(n)表示第一層循環的i為n時的循環次數,注意到他的下一層循環次數剛好就是n,分別是0,1,2...n-1 所以,把每一層循環設一個函數分別為:j(n),k(n),t(n) 則有 i(n)=j(0)+...+j(n-1) j(n)=k(0)+...+k(n-1) k(n)=t(0)+...+t(n-1) i(0)=j(0)=k(0)=0 t(n)=1 而總循環數是i(0)+i(1)...+i(n-1) 可以根據遞推條件得出准確值 所以演算法復雜度是O(i(0)+i(1)...+i(n-1))
記得採納啊

問題四:如何計算演算法的時間復雜度和空間復雜度 是說明一個程序根據其數據n的規模大小 所使用的大致時間和空間
說白了 就是表示 如果隨著n的增長 時間或空間會以什麼樣的方式進行增長

for(int i = 0; i 問題五:一個演算法的時間復雜度是什麼函數? 關於n的函數,n是問題的規模

問題六:請問遞歸演算法的時間復雜度如何計算呢? 遞歸演算法的時間復雜度分析 收藏
在演算法分析中,當一個演算法中包含遞歸調用時,其時間復雜度的分析會轉化為一個遞歸方程求解。實際上,這個問題是數學上求解漸近階的問題,而遞歸方程的形式多種多樣,其求解方法也是不一而足,比較常用的有以下四種方法:
(1)代入法(Substitution Method)

代入法的基本步驟是先推測遞歸方程的顯式解,然後用數學歸納法來驗證該解是否合理。

(2)迭代法(Iteration Method)

迭代法的基本步驟是迭代地展開遞歸方程的右端,使之成為一個非遞歸的和式,然後通過對和式的估計來達到對方程左端即方程的解的估計。

(3)套用公式法(Master Method)

這個方法針對形如「T(n) = aT(n/b) + f(n)」的遞歸方程。這種遞歸方程是分治法的時間復雜性所滿足的遞歸關系,即一個規模為n的問題被分成規模均為n/b的a個子問題,遞歸地求解這a個子問題,然後通過對這a個子間題的解的綜合,得到原問題的解。

(4)差分方程法(Difference Formula Method)
可以將某些遞歸方程看成差分方程,通過解差分方程的方法來解遞歸方程,然後對解作出漸近階估計。

下面就以上方法給出一些例子說明。

一、代入法

大整數乘法計算時間的遞歸方程為:T(n) = 4T(n/2) + O(n),其中T(1) = O(1),我們猜測一個解T(n) = O(n2 ),根據符號O的定義,對n>n0,有T(n) >

問題七:如何計算時間復雜度 如何計算時間復雜度
定義:如果一個問題的規模是n,解這一問題的某一演算法所需要的時間為T(n),它是n的某一函數 T(n)稱為這一演算法的「時間復雜性」。
當輸入量n逐漸加大時,時間復雜性的極限情形稱為演算法的「漸近時間復雜性」。
我們常用大O表示法表示時間復雜性,注意它是某一個演算法的時間復雜性。大O表示只是說有上界,由定義如果f(n)=O(n),那顯然成立f(n)=O(n^2),它給你一個上界,但並不是上確界,但人們在表示的時候一般都習慣表示前者。
此外,一個問題本身也有它的復雜性,如果某個演算法的復雜性到達了這個問題復雜性的下界,那就稱這樣的演算法是最佳演算法。
「大 O記法」:在這種描述中使用的基本參數是 n,即問題實例的規模,把復雜性或運行時間表達為n的函數。這里的「O」表示量級 (order),比如說「二分檢索是 O(logn)的」,也就是說它需要「通過logn量級的步驟去檢索一個規模為n的數組」記法 O ( f(n) )表示當 n增大時,運行時間至多將以正比於 f(n)的速度增長。
這種漸進估計對演算法的理論分析和大致比較是非常有價值的,但在實踐中細節也可能造成差異。例如,一個低附加代價的O(n2)演算法在n較小的情況下可能比一個高附加代價的 O(nlogn)演算法運行得更快。當然,隨著n足夠大以後,具有較慢上升函數的演算法必然工作得更快。
O(1)
Temp=i;i=j;j=temp;
以 上三條單個語句的頻度均為1,該程序段的執行時間是一個與問題規模n無關的常數。演算法的時間復雜度為常數階,記作T(n)=O(1)。如果演算法的執行時 間不隨著問題規模n的增加而增長,即使演算法中有上千條語句,其執行時間也不過是一個較大的常數。此類演算法的時間復雜度是O(1)。
O(n^2)
2.1. 交換i和j的內容
sum=0; (一次)
for(i=1;i>

問題八:演算法的時間復雜度 以下是考研時常用的計算方法,實際上最簡單的方法採用多項式最大階的方法,如:
f(n)=a1*n^m+a2*n^(m-1)+.......an-1*n+an
的時間復雜度為:T(f(n))=O(n^m)
採用時間步法,找一個函數g(n),找一個自然數n0,使f(n)T(n)=O(n)
(2)6n^2-12n+1=12)=7n^2=7*g(n)==>T(n)=O(n^2)
(3)n(n+1)(n+2)/6=n0=2時)=n0=4)=2*g(n)===>T(n)=O(n^3)
(4)2^(n+1)+100nT(n)=O(2^n)

Ⅷ 演算法的時間復雜度如何計算

求解演算法的時間復雜度的具體步驟是:
⑴ 找出演算法中的基本語句;
演算法中執行次數最多的那條語句就是基本語句,通常是最內層循環的循環體。
⑵ 計算基本語句的執行次數的數量級;
只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函數中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的系數。這樣能夠簡化演算法分析,並且使注意力集中在最重要的一點上:增長率。
⑶ 用大Ο記號表示演算法的時間性能。
將基本語句執行次數的數量級放入大Ο記號中。
如果演算法中包含嵌套的循環,則基本語句通常是最內層的循環體,如果演算法中包含並列的循環,則將並列循環的時間復雜度相加。例如:
for (i=1; i<=n; i++)
x++;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
x++;
第一個for循環的時間復雜度為Ο(n),第二個for循環的時間復雜度為Ο(n2),則整個演算法的時間復雜度為Ο(n+n2)=Ο(n2)。
常見的演算法時間復雜度由小到大依次為:
Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)
Ο(1)表示基本語句的執行次數是一個常數,一般來說,只要演算法中不存在循環語句,其時間復雜度就是Ο(1)。Ο(log2n)、Ο(n)、Ο(nlog2n)、Ο(n2)和Ο(n3)稱為多項式時間,而Ο(2n)和Ο(n!)稱為指數時間。計算機科學家普遍認為前者是有效演算法,把這類問題稱為P類問題,而把後者稱為NP問題。
這只能基本的計算時間復雜度,具體的運行還會與硬體有關。
參考博客地址:http://blog.csdn.net/xingqisan/article/details/3206303

熱點內容
微信忘記密碼從哪裡看 發布:2024-05-19 16:06:37 瀏覽:32
寶馬x4貸款買哪個配置好 發布:2024-05-19 15:56:03 瀏覽:22
微控pid演算法 發布:2024-05-19 15:46:31 瀏覽:135
雲盤視頻解壓密碼 發布:2024-05-19 15:23:17 瀏覽:848
和平精英怎麼改地區位置安卓 發布:2024-05-19 15:19:05 瀏覽:286
酒店的路由器如何配置 發布:2024-05-19 15:10:44 瀏覽:500
rpgmaker腳本 發布:2024-05-19 14:48:58 瀏覽:407
hds存儲虛擬化 發布:2024-05-19 14:47:09 瀏覽:21
mysql資料庫分片 發布:2024-05-19 14:42:30 瀏覽:342
2021款魏派vv6買哪個配置 發布:2024-05-19 14:31:11 瀏覽:633