91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解Java算法復雜度

發布時間:2021-11-01 17:02:11 來源:億速云 閱讀:137 作者:iii 欄目:編程語言

本篇內容主要講解“怎么理解Java算法復雜度”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解Java算法復雜度”吧!

大O符號

衡量時間復雜度通常使用”大O符號“。什么是大O符號?我們需要先看看一些數學知識:函數和極限。

2.1、數學舉例:

00001. 一元二次函數f(x)=2x^2+2x+2;

00002. 當x趨于無窮大的時候,記作x—>∞。

00003. x->∞,f(x)=2x^2+2x+2 = 2x^2 = 2x^2。

上述第3項,當x無窮大的時候2x^2+2x+2約等于2x^2,在極限思想(算法分析)里面可以理解為2x^2+2x+2=2x^2。原因如下:

當x=5的時候:

2x^2+2x+2=62.

2x^2=50.

當x=500的時候:

2x^2+2x+2=501002

2x^2=250000.

通過上面的例子,繼續增大x的值,甚至無窮大的時候,f(x)函數中的2x+2這一項就可以忽略不計了。所以x->∞時,(2x^2+2x+2)約等(2x^2),或者(2x^2+2x+2)=(2x^2)。并且在極限思想里面,2x^2前面的系數2也是可以省略的。也就是說x->∞的時候,2x^2~x^2。

通過極限的思想,我們將函數f(x)=2x^2+2x+2,省略剩余項為x^2。也就是說x->∞時,f(x)=2x^2+2x+2=x^2;使用大O符號表示:x->無窮大,f(x)=O(x^2)。

2.2、概念

大O是用來刻畫被截斷的無窮級數尤其是漸近級數的剩余項。大O符號表示函數的漸進性上界。就好比上面的數學舉例,函數f(x)=2x^2+2x+2 漸進級數的剩余項就是x^2,記作O(x^2)。也就是說O(x^2)是f(x)的漸進性上界。

時間復雜度

題目:求1+2+3+……+n的和。(高斯算法)

● 初級程序員的代碼:

… …

    for (int i = 1; i <= n; i++) {

        sum+=i;

    }

… …

分析:

00001. 上述代碼中的sum+=1執行多少次? 答案:n次。

00002. int i=1執行1次。

00003. i<=n執行n+1次。(因為for循環執行的順序,只有i大于n時才會停止循環,所以i=n+1的時候,還會再判斷一下i<=n,所以相比較而言會多執行一次)。

00004. i++執行n次。

匯總一下,上述代碼執行n+1+n+1+n=3n+2次。

如果用極限思維,n->∞,3n+2 ~ 3n ~ n;記作O(n)。O(n)就是上述代碼的時間復雜度。

● 高級程序員的代碼:

… …

   (1+n)*n/2

… …

如上,同樣的計算1加到n,采用高斯算法就簡單多了。上述代碼只需要執行1次,沒有循環。所以時間復雜度就是O(1)。

● 小結

O(1)和O(n)的區別是什么呢?當上述”初級程序員代碼“和”高級程序員代碼”中的變量n不斷增大的時候,高斯算法的時間復雜度基本不變,還是O(1)。但是“初級程序員代碼”的時間復雜度就會增加。

對于計算機來說,高斯算法求解1連續加到n的計算速度遠遠大于for循環的速度。速度越快,系統的性能就會越好。

到此,相信大家對“怎么理解Java算法復雜度”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商都县| 平顶山市| 邵阳市| 南丹县| 杭锦后旗| 手机| 时尚| 博罗县| 应用必备| 渑池县| 古丈县| 获嘉县| 禹州市| 江源县| 杭锦旗| 佛山市| 大荔县| 巨野县| 汉中市| 准格尔旗| 沂水县| 大厂| 丁青县| 紫云| 上饶县| 饶河县| 和静县| 张家界市| 五峰| 横峰县| 化州市| 兴城市| 吉木萨尔县| 当阳市| 伊宁市| 万州区| 鄂托克前旗| 上犹县| 阿克陶县| 嘉义县| 汉川市|