求問個c語言問題 這個演算法的時間複雜度怎麼看

時間 2023-01-24 22:15:09

1樓:匿名使用者

時間複雜度等於內層迴圈的值,不算外層的。

內層是x那麼時間複雜度記為o(1000)

如果是並列的,比如。

x=0:y=0

while(x<100)

x++:while(y<100)

y++;這個並列的就記為o(100+100)=o(200)

2樓:雲戰天涯

看它的迴圈語句,while語句會執行1000次。

c語言演算法的時間複雜度如何計算啊?

3樓:熊貓

看看這個 每個迴圈都和上一層迴圈的引數有關。 所以要用地推公式: 設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))

記得采納啊。

4樓:血刺廢車

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

一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。 2)時間複雜度 在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。

但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。 一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。

記作t(n)=of(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。 在各種不同演算法中,若演算法中語句執行次數為一個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。 按數量級遞增排列,常見的時間複雜度有:

常數階o(1),對數階o(log(2)n),線性階o(n), 線性對數階o(nlog(2)n),平方階o(n^2),立方階o(n^3),.k次方階o(n^k),指數階o(2^n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

5樓:問豐建思蓮

在計算之前取得系統的滴答數。

inttbegin

=gettickcount();

計算完成過後再次呼叫減去滴答數就行了,單位msinttend

=gettickcount()

-tbegin;

還有其他更精確的函式,搞忘了,你最好查下msdn純c下不要用c自帶的計算滴答數的函式,不精確,應該使用系統的。

關於c語言演算法的時間複雜度有個疑問

6樓:匿名使用者

不矛盾,那個o(1)代表演算法的執行時間與問題的規模n無關,是一個常量。

既然沒有迴圈,也就是一次執行一些基本操作就完成了,當然就是常量了。

7樓:天天是吧草南

看它的迴圈語句,while語句會執行1000次。

c語言迷宮問題,求該演算法的時間和空間的複雜度。迷宮的路徑已經定義好,求出路的演算法。

8樓:匿名使用者

該演算法是不穩定的,其時空複雜度不僅和m,n有關,還和mg的具體數值有關。

最壞情況下:每個點都試探過才走到終點。此時時間複雜度為:(m*n-1)*4,(其中4為4個方向),空間複雜度m*n*2,(其中m*n為儲存迷宮圖空間,m*n為棧空間);

再好情況下:一次試探過就走到終點。此時時間複雜度為:(min(m,n)-1),空間複雜度m*n;

所以:該演算法時間複雜度為:[(m*n-1)*4+(min(m,n)-1)]/2,約為2×m×n

空間複雜度為3*m*n/2

什麼是c語言中的時間複雜度?如何計算?

9樓:林柯伊南

時間復抄雜度不是相對於襲。

程式而言的,而是指問題的複雜。

例如排序,對分查詢在最劣情況下也是平方問題,但對於絕大多數問題而言,我們只關心平均效率。

例如稀疏陣列,可以降低對空間的要求,但當有用資料超過一定規模,執行速度將急劇下降。

次數超過4的多項式沒有平凡解,所以被成為大o的n次方問題,這樣的問題總是需要那麼多時間才能完成計算,這就是時間的複雜度。

任何資料的壓縮都有極限,越是隨機的資料,越不能找到良好的資料結構,這就是空間的複雜性。

實際上如果沒有好的演算法和資料結構,大多數程式是無法真正做到應用的。

10樓:

時間複雜度是就演算法而言的,與語言無關,時間複雜度不需要計算,是通過理論分析出來的,有很多方法來分析時間複雜度。

設計求解下列問題的類c語言演算法,並分析其最壞情況時間複雜性及其量級。 1.在陣列a(1..n)中查詢

11樓:使命聽一聽召喚

思路:最壞情況比較次數。

最好情況比較次數。

求出平均比較次數。

算出基本運算次數。

得出時間複雜度 f(n)=o(g(n))

c語言迷宮問題,求該演算法的時間和空間的複雜度。迷宮的路徑已經定義好,求出路的演算法。

12樓:網友

時間複雜度:o(nm) (這是時間的上界,最多把所有點都遍歷一遍,且邊與點的訪問是同階的)

空間複雜度:o(nm) (把這個圖存下來就要nm的空間)

c語言演算法時間複雜度

13樓:匿名使用者

外層抄迴圈執。

行bain次 i=1,2,3...n-1,內層迴圈執du行n-i次zhi,n-i=n-1,n-2,n-3...1

內層迴圈的daox++執行。

1+2+3+..n-3)+(n-2)+(n-1)=n*(n-1)/2 次。

14樓:抄仙以向露

看看迴圈體的個來數,一般來說迴圈體自越多。

時間bai複雜度越高。

例如for(i:0->n)

for(j:

0->m)這段**du的操作執行次數是zhin*m如果n和m之間有函式dao關係,如n=

2m。基本操作次數就是2m^2,時間複雜度中只取最高次冪項且忽略係數,所以時間複雜度為:o(m^2)

當然也可以西城o(n^2)。

c語言中,時間複雜度函式怎麼定義

C語言演算法的問題

演算法一 用的是等差數列的求和公式,現在簡單推導一下 s 1 2 3 ns n n 1 n 2 1相加得 2 s n 1 n 1 n 1 n 1 得 s n 1 n 2 演算法二和演算法三 都差不多,c語言實現如下 void sum int n 2和3不是一樣的麼。感覺是在忽悠。演算法三 第1步 將...

C 語言問題求解,求C語言問題

1 printf d r 改成printf d m while a 2551 a 251 的 改成 2 sum 移動到for n 1 n 10 n 和 for k 1 k 4 k 之間。填空1 1填空2 i 10 填空3 1 f 填空4 m結果 m 5 include int main return...

C語言問題求答案,c語言問題 求答案

你這個問題問的真是太好了,簡直是前無古人後無來者。這題有神經病可以答的出來,正常人都無法給你準確的答案,建議你去醫院看看。c語言問題 求答案 聽不清啊 include void confab const char int,int s,char outt else if int i a int i z...