-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
如何計算算法復(fù)雜度(如何計算算法復(fù)雜度的方法)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于如何計算算法復(fù)雜度的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、時間復(fù)雜度怎么計算?
1. 一般情況下,算法的基本操作重復(fù)執(zhí)行的次數(shù)是模塊n的某一個函數(shù)f(n),因此,算法的時間復(fù)雜度記做:T(n)=O(f(n))x0dx0a 分析:隨著模塊n的增大,算法執(zhí)行的時間的增長率和f(n)的增長率成正比,所以f(n)越小,算法的時間復(fù)雜度越低,算法的效率越高。x0dx0a 2. 在計算時間復(fù)雜度的時候,先找出算法的基本操作,然后根據(jù)相應(yīng)的各語句確定它的執(zhí)行次數(shù),再找出T(n)的同數(shù)量級(它的同數(shù)量級有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n?。?,找出后,f(n)=該數(shù)量級,若T(n)/f(n)求極限可得到一常數(shù)c,則時間復(fù)雜度T(n)=O(f(n))x0dx0a 例:算法:x0dx0a for(i=1;i<=n;++i)x0dx0a {x0dx0a for(j=1;j<=n;++j)x0dx0a {x0dx0a c[ i ][ j ]=0; //該步驟屬于基本操作 執(zhí)行次數(shù):n的平方 次x0dx0a for(k=1;k<=n;++k)x0dx0a c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //該步驟屬于基本操作 執(zhí)行次數(shù):n的三次方 次x0dx0a }x0dx0a }x0dx0a 則有 T(n)= n的平方+n的三次方,根據(jù)上面括號里的同數(shù)量級,我們可以確定 n的三次方 為T(n)的同數(shù)量級x0dx0a 則有f(n)= n的三次方,然后根據(jù)T(n)/f(n)求極限可得到常數(shù)cx0dx0a 則該算法的 時間復(fù)雜度:T(n)=O(n的三次方)
二、快速計算冒泡算法時間復(fù)雜度
冒泡排序程序簡單,基本大家都會,今天講下如何計算其時間復(fù)雜度。算法比較簡單,簡單講下大家應(yīng)該就明白了。
最壞的情況就是所有的元素都要對換,比如希望排出從小到大的順序,而數(shù)組卻是從大到小排列:5,4,3,2,1。那么時間復(fù)雜度就達(dá)到了最大值。
具體計算方法是這樣的:一共有5個數(shù)字的話,那么冒出的第一個泡需要對換5-1次后放到最后,由于已經(jīng)找到了最大值放到了最后,冒出的第二個泡就只需要對換5-2次放到倒數(shù)第二位了,由于已經(jīng)找到了最大的兩個放到了后面,冒出的第三個泡就只需要對換5-3次了。以此類推,一共需要對換:(5-1) + (5-2) + (5-3) + (5-4)次,相當(dāng)于一個等差數(shù)列求和:1+...+(5-1) ,這里的5可以替換為n,所以最壞情況需要排序(n-1)** n/2,這個就相當(dāng)于n n,也就是n方了。
簡單的想就是冒第i個泡,需要n-i次比較,之所以n-i是因為第一個需要比較n-1次,剩下的不需要和已經(jīng)冒出的泡比較,所以是n-1-(i-1),也就是n-i了。所有比較次數(shù)相加就是時間復(fù)雜度了。
排序前:5,4,3,2,1
排序第一次找到最大值:4,3,2,1,5
排序第二次找到次大值:3,2,1,4,5
排序第三次找到第3大值:2,1,3,4,5
排序第四次找到第4大值:1,2,3,4,5
三、在一個具體的程序中,程序的復(fù)雜度是如何計算的?
算法的復(fù)雜性
算法的復(fù)雜性是算法效率的度量,是評價算法優(yōu)劣的重要依據(jù)。一個算法的復(fù)雜性的高低體現(xiàn)在運行該算法所需要的計算機資源的多少上面,所需的資源越多,我們就說該算法的復(fù)雜性越高;反之,所需的資源越低,則該算法的復(fù)雜性越低。
計算機的資源,最重要的是時間和空間(即存儲器)資源。因而,算法的復(fù)雜性有時間復(fù)雜性和空間復(fù)雜性之分。
不言而喻,對于任意給定的問題,設(shè)計出復(fù)雜性盡可能低的算法是我們在設(shè)計算法時追求的一個重要目標(biāo);另一方面,當(dāng)給定的問題已有多種算法時,選擇其中復(fù)雜性最低者,是我們在選用算法適應(yīng)遵循的一個重要準(zhǔn)則。因此,算法的復(fù)雜性分析對算法的設(shè)計或選用有著重要的指導(dǎo)意義和實用價值。
簡言之,在算法學(xué)習(xí)過程中,我們必須首先學(xué)會對算法的分析,以確定或判斷算法的優(yōu)劣。
1.時間復(fù)雜性:
例1:設(shè)一程序段如下(為討論方便,每行前加一行號)
(1) for i:=1 to n do
(2) for j:=1 to n do
(3) x:=x+1
......
試問在程序運行中各步執(zhí)行的次數(shù)各為多少?
解答:
行號 次數(shù)(頻度)
(1) n+1
(2) n*(n+1)
(3) n*n
可見,這段程序總的執(zhí)行次數(shù)是:f(n)=2n2+2n+1。在這里,n可以表示問題的規(guī)模,當(dāng)n趨向無窮大時,如果 f(n)的值很小,則算法優(yōu)。作為初學(xué)者,我們可以用f(n)的數(shù)量級O來粗略地判斷算法的時間復(fù)雜性,如上例中的時間復(fù)雜性可粗略地表示為T(n)=O(n2)。
2.空間復(fù)雜性:
例2:將一一維數(shù)組的數(shù)據(jù)(n個)逆序存放到原數(shù)組中,下面是實現(xiàn)該問題的兩種算法:
算法1:for i:=1 to n do
b[i]:=a[n-i+1];
for i:=1 to n do
a[i]:=b[i];
算法2:for i:=1 to n div 2 do
begin
t:=a[i];a[i]:=a[n-i-1];a[n-i-1]:=t
end;
算法1的時間復(fù)雜度為2n,空間復(fù)雜度為2n
算法2的時間復(fù)雜度為3*n/2,空間復(fù)雜度為n+1
顯然算法2比算法1優(yōu),這兩種算法的空間復(fù)雜度可粗略地表示為S(n)=O(n)
信息學(xué)比賽中,經(jīng)常是:只要不超過內(nèi)存,盡可能用空間換時間。
四、計算算法時間復(fù)雜度
算法的時間復(fù)雜度主要通過循環(huán)來看……
第一個for循環(huán)每做1次,第2個就要做m次,所以時間復(fù)雜度是:m*m = m2
以上就是關(guān)于如何計算算法復(fù)雜度相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
如何知道一個關(guān)鍵詞的搜索量(如何知道一個關(guān)鍵詞的搜索量呢)
企業(yè)如何做抖音代運營業(yè)務(wù)(企業(yè)如何做抖音代運營業(yè)務(wù)工作)
怎么查詢自己的商標(biāo)能不能用(如何查詢商標(biāo)能不能用)
抖音同城怎么恢復(fù)原來的同城(抖音同城怎么恢復(fù)原來的同城呢)
淘寶一個關(guān)鍵詞要刷多久(淘寶一個關(guān)鍵詞要刷多久才能推廣)
問大家
如何開通抖音海外直播白名單?抖音海外直播權(quán)限解決辦法
霍邱網(wǎng)頁美工設(shè)計該如何選擇?路過的大哥大姐們有誰了解
濟(jì)南有哪家單身男女婚戀交友平臺介紹對象的比較正規(guī)?收費如何?
抖音如何開通韓國直播權(quán)限?抖音怎么開通韓國直播權(quán)限辦法
房山喬遷慶典現(xiàn)場協(xié)助大概收費如何?大佬們請問
平面設(shè)計師,美工設(shè)計師,視覺設(shè)計師,到底該如何獲取創(chuàng)意思維?
山東婚介所哪個正規(guī)靠譜點,最誠信的婚姻介紹所有哪些?