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...