同程式,因為計算不同問題,演算法時間複雜度可以不同嗎

2021-03-17 14:18:02 字數 3130 閱讀 2618

1樓:1554又來了

可以比如快數排序。當資料基本有序時時間複雜度為o(n^2),最好時為o(log2n)【2是下標,這個打不出來】

同乙個演算法,可以編寫不同的程式,程式的執行時間不同,因此乙個演算法可以有多種不同的時間複雜性

2樓:哥們兒會_臭臭

因果關係不成立啊。時間複雜性和執行時間沒有直接的關係。比如同樣是o(n)時間複雜度,乙個程式n=10000000 乙個程式 n=1000,那麼執行時間就不通了,到複雜性一樣

為什麼要進行時間複雜度分析

3樓:

首先任何乙個程式最重要是準確性,即要確保程式能正常執行,實現預期功能。

但是,任何乙個有價值的程式除了確保能正常執行,還要確保盡量短的執行時間和盡量少的執行空間,使程式正確高效執行得到預期效果。這就涉及時間複雜度分析和(空間複雜度分析),通過分析程式演算法的時間複雜度可以找出執行時間盡量短的演算法。

對於一些資料處理比較少的簡單程式,不同演算法使程式執行時間不同,但由於資料處理量少,這種執行時間的差別可以忽略。但是在實際應用中,很多程式往往涉及相當大量的資料處理,這就會導致實現同乙個功能的程式,用不同演算法,執行時間差別很大。有些演算法可能只要幾秒,有些演算法卻要幾天才能得到結果。

這時候,時間複雜度的分析就顯得必要

演算法的時間複雜度與空間複雜度各是什麼意思

4樓:匿名使用者

是說明乙個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空間會以什麼樣的方式進行增長

例for(int i = 0; i < n;++i);這個迴圈執行n次 所以時間複雜度是o(n)for(int i = 0; i< n;++i)這巢狀的兩個迴圈 而且都執行n次

那麼它的時間複雜度就是 o(n^2)

時間複雜度只能大概的表示所用的時間

而一些基本步驟 所執行的時間不同 我們無法計算 所以省略如for(int i = 0;i < n;++i)a = b;

和for(int i = 0;i < n;++i);這個執行的時間當然是第二個快 但是他們的時間複雜度都是 o(n)判斷時間複雜度看迴圈

5樓:匿名使用者

《計算方法》中有相關的詳細資訊。本質上,不論時間複雜度還是空間複雜度都反應的是問題本身的複雜度。乙個計算要不就需要很大的儲存空間來減少計算時間;要不就需要較長的計算時間來節約儲存空間。

時間或空間複雜度也用來衡量各種計算方法對於不同的計算要求的表現。比如,不同的計算方法其實在時空複雜度上是相同的。

關於具體的時間複雜度與空間複雜度是如何量化的,如何計算,如何應用還是仔細看看教材吧。

演算法時間複雜度與執行時間的關係

6樓:匿名使用者

我來舉個例子說明

比如一種排序演算法的時間複雜度是 o(n),那麼執行時間就是正比於要素個數n,

另一種排序演算法的時間複雜度是o(n*logn),那麼執行時間就正比於n*logn

所以n足夠大的情況下,總是第一種演算法快.

但是,如果n不是很大,那麼具體的運算時間並不一定都是前一種演算法快,比如剛才的第一種演算法的實際速度是 100×n, 第二種演算法的實際速度是 2× n × logn,

n=100,就會是第二種演算法快

7樓:海岸餡

執行時間隨著輸入量增大而增大,複雜度越高,執行時間增加速度越快。

一般計算的時候認為計算機1s可以進行10^9次運算,那麼輸入數量當n=1000時,複雜度n^3的程式需要執行1s。而複雜度log n 的只需要極少的時間(不到1毫秒)

8樓:匿名使用者

演算法時間越複雜,執行時間也大

9樓:李莞朋順

計算機在完成乙個任務的時候有兩個指標,時間和所有記憶體(也就是空間)。這兩者是負相關的。也就是說,當你設計乙個特定程式時,你可以選擇使用更多的記憶體,這樣可以達到提高程式執行速度的目的,也就是減少程式執行時間。

另一方面,你也可以選擇使用較少的記憶體,這樣可以節省記憶體但同時程式執行速度會變慢,也就是說程式執行要花費更多的時間。簡言之,演算法中只有兩種策略,要麼以時間換空間,要麼以空間換時間。

直接回答問題就是空間複雜度高的演算法其時間複雜度低,反之亦然。

何謂演算法?它與程式有何區別?

10樓:匿名使用者

演算法是處理解決問題的思路及辦法,程式語言是按照一定語法把演算法表達來。

打個比方,你頭腦裡有了一套新思想,乙個新發現,你可以用中文寫出來,也可以用英文寫出來,讓大家明白。思想和發現可以比作是演算法,用中文或英文可以比作是程式語言。

因此核心是演算法,但程式語言是實現演算法的載體。在計算機等系統中,演算法是處理某一問題的思路方法,而程式語言能具體表達演算法從而使之執行起來通過演算法需要完成的任務。

11樓:蜀道北

人能理解的運算方法叫演算法;機器能理解的運算方法叫程式。

12樓:匿名使用者

演算法就是計算方法,是從計算機程式設計角度考慮如何解決實際問題的,要結合計算機的特點

一般演算法不是只針對某種程式語言或程式的,是乙個籠統的方法,可以用具體計算機語言程式實現,因此它並不是直接就是程式,由於演算法的通用性,具體用某種語言實現演算法時,需要根據該語言的特點具體程式設計。

13樓:匿名使用者

程式是一段由**構成的文字檔案/二進位制檔案。演算法是程式實現其功能過程中所需要的思想方法。同樣的演算法可以有不同的實現,就變成了不同的程式。

就好像寫作文,高考作文是一篇800到1000字的文字段,而中心思想是這一整篇文章所想表達的意思。同樣的意思可以有不一樣的表達,寫成不同的作文。

14樓:匿名使用者

演算法不要求把具體的實現過程描述出來,只需要解決問題的思路就可以了。但是程式是實現的具體過程,是將實現的方法用法用**的方式表達出來。

15樓:匿名使用者

最通俗的一句話,程式可以直接放到編譯器中執行,演算法不可以!

16樓:匿名使用者

演算法是抽象的,程式是具體的。演算法是程式的理論基礎,程式是演算法的具體實現。

演算法的時間複雜度是指空間複雜度是指

時間複雜度指的是隨著資料規模的增大時間的增率,比如資料量為n,花的時間為n 2,複雜度就是n 2,同理空間複雜度指的是記憶體的開銷。最次的情況就是階乘級別的複雜度,這種演算法是不能用的。演算法的空間複雜度指的是什麼?空間複雜度 space plexity 是對乙個演算法在執行過程中臨時占用儲存空間大...

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

計算以下程式的執行次數和時間複雜度,主要說一下詳細過程,我是

執行次數 9次 時間複雜度 o 1 因為這個程式迴圈次數只是有限次,其他賦值以及輸出操作時間複雜度只按1算,加起來還是等於乙個常數,故時間複雜度為o 1 如果將s 10改為 s c語言資料結構時間複雜度 1 因為抄f n 和g n 在n趨於 無窮大時襲為n 3階,h n 為n 1.5因此 1 f n...