1樓:風若遠去何人留
時間複雜度只看迴圈次數。
和實際執行的運算並沒有關係。
所以這兩個時間複雜度都是o(n)
c語言演算法的時間複雜度如何計算啊?
2樓:熊貓
看看這個 每個迴圈都和上一層迴圈的引數有關。 所以要用地推公式: 設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))
記得採納啊。
3樓:血刺廢車
(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的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。
4樓:問豐建思蓮
在計算之前取得系統的滴答數。
inttbegin
=gettickcount();
計算完成過後再次呼叫減去滴答數就行了,單位msinttend
=gettickcount()
-tbegin;
還有其他更精確的函式,搞忘了,你最好查下msdn純c下不要用c自帶的計算滴答數的函式,不精確,應該使用系統的。
c語言時間複雜度求解
5樓:匿名使用者
(1)兩層迴圈,每層bai
執行dun次,時間複雜度為o(n^2)
zhi(2)也是兩層迴圈dao,可以算出總共執行了回多少次,其答中n的最高次數為2,所以時間複雜度也為o(n^2)
(3)同上,o(n^2)
(4)迴圈體執行次數為n-1,時間複雜度為o(n)(5)三層迴圈,每層執行n次,時間複雜度為o(n^3)資料結構課程中,對演算法進行評估要求不是很高,只需大致算出語句執行了多少次即可,常見的、能寫成小段**考察的一般都是o(n^2)、o(n)、o(n^3),o(log n)的就那麼幾個,記住就行。
關於c語言程式設計的時間複雜度
6樓:臨江仙
printf("%d%c",a,c)算是一條語句。
strcmp(svyd,svyy)這個是一條基本計算時間複雜度通常不這麼看。
如果是乙個for迴圈,比版如權。
for(i = 0; i 算是o(n),是個線性的。
如果for裡面又乙個for,那麼是o(n^2)。
建議看一下資料結構演算法相關的知識。
7樓:匿名使用者
這是乙個函式,copy並不是什麼基本運算bai,這些庫du函式你可以看看他們的定義,裡邊還zhi可能有其它的函式。dao你說的基本運算應該是指一條cpu的指令,比如一次加法之類的,這個你學了彙編可能會更了解,而其實就算是一條彙編指令他們用的時間也可能不同的,比如乘法比加法慢,這些你學了微機原理應該就知道了。而對於程式設計師來說,時間複雜度是演算法裡的概念,你學了演算法設計就知道了。
給出下面幾個c語言程式段的時間複雜度。要求寫出計算過程 ,謝謝了,**等。
8樓:匿名使用者
1、主要操作是i = i * 5和i<=n,設迴圈次數為x,則5^x <=n,因此x <=log5(n),其中5是底數,因此時間複雜度為o(log5(n))。
2、主要操作在while迴圈中,設迴圈執行次數為x,則x^2<= n,x <=sqrt(n),因此時間複雜度為o(sqrt(n))。
3、主要是看內迴圈執行的次數,當i=1時,內迴圈執行n-3次i=2時,內迴圈執行n-6次,所以總的執行次數是(n-3*1)+(n-3*2)+(n-3*3)+.n-3*n/3)。總的項數為n/3,因此總次數為n*(n/3)-3*(1+2+..
+n/3)=(n^2 - 3n)/6。因此時間複雜度為o(n^2)
9樓:匿名使用者
求時間複雜度只需找出執行次數最多的那條語句。
對於第乙個,設執行次數為k,則i最終等於k^5=n; 解出k即可;
對於第二個,設執行次數為k,則最終有k^2=n;解出k;
對於第三個,if語句執行n/3次,單獨看裡面的for執行(n-n/3)次,結合if語句,則最終有。
(n-n/3)*n/3 ,時間複雜度一眼便知。
c語言的時間複雜度怎麼算?
10樓:匿名使用者
1.意思就是i是從1開始到n ,j也是從1開始到就是i等於1的時候算的值,依次類推j(n)就是當i=n的時候。
3.這個公式的意思就是累加和,也就是j(1)+j(2)+。j(n) ,而每乙個j都要經過乙個i的值進行一次運算。所以時間複雜度就是為n
3.再給你個例子。
for(i = 1;i < n; i++)如此的話,時間複雜度就是為n*n
c語言中演算法時間複雜度
11樓:夢風兒
看看迴圈體的個數,一般來說迴圈體越多 時間複雜度越高 例如for(i:0->n) for(j: 0 ->m) 這段**的操作執行次數是n*m 如果n和m之間有函式關係,如 n = 2m。
基本操作次數就是2m^2,時間複雜度中只取最高次冪項且忽略係數,所以時間複雜度為:o(m^2) 當然也可以西城o(n^2)。
12樓:肇全官傲易
外層迴圈每迴圈一次,if會被執行一次,對吧?
外層迴圈需要y--100次才會停對吧?
外層迴圈每執行11次,才會執行1次y--對吧?
那不就是。11*100了麼?
什麼是c語言中的時間複雜度?如何計算?
13樓:林柯伊南
時間復抄雜度不是相對於襲。
程式而言的,而是指問題的複雜。
例如排序,對分查詢在最劣情況下也是平方問題,但對於絕大多數問題而言,我們只關心平均效率。
例如稀疏陣列,可以降低對空間的要求,但當有用資料超過一定規模,執行速度將急劇下降。
次數超過4的多項式沒有平凡解,所以被成為大o的n次方問題,這樣的問題總是需要那麼多時間才能完成計算,這就是時間的複雜度。
任何資料的壓縮都有極限,越是隨機的資料,越不能找到良好的資料結構,這就是空間的複雜性。
實際上如果沒有好的演算法和資料結構,大多數程式是無法真正做到應用的。
14樓:
時間複雜度是就演算法而言的,與語言無關,時間複雜度不需要計算,是通過理論分析出來的,有很多方法來分析時間複雜度。
資料結構與演算法分析問題(c語言)
15樓:網友
如果這兩個多項式分別有m項和n項,那麼你的程式的時間複雜度是。
o(m+n)
演算法的空間複雜度,時間複雜度,有窮性分別是什麼意思
通俗來說 空間複雜度是指運算過程中佔用的記憶體和輸入的漸進關係。時間複雜度是指運算過程中使用的時間和輸入的漸進關係。有窮性是指在有限時間內可以結束運算。演算法的時間複雜度與空間複雜度各是什麼意思 是說明乙個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空...
這演算法的時間複雜度是多少,這三個演算法的時間複雜度是多少?
1 o n 2 o n 2 3 o n 如何計算時間複雜度 定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意...
兩個質數的和是39,求這兩個質數的積是多少
解 因為39是奇 bai數 兩個奇數相加,得 du到偶數 zhi不可能得到奇數 只 dao有奇數加內偶數才會等於奇數 所以,容這兩個質數,一定有乙個是偶數的 因為,在所有的質數裡面,只有2是偶數 所以,這兩個質數,一定有乙個是2 再求另乙個質數 39 2 37 所以,這兩個質數一定是 2和37 再算...