HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務(wù)案例
NEWS 熱點資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    如何計算算法復(fù)雜度(如何計算算法復(fù)雜度的方法)

    發(fā)布時間:2023-04-18 20:30:05     稿源: 創(chuàng)意嶺    閱讀: 55        

    大家好!今天讓創(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ù)雜度(如何計算算法復(fù)雜度的方法)

    一、時間復(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)鍵詞要刷多久才能推廣)