<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          算法復(fù)雜度的分析方法及其運(yùn)用

          共 1846字,需瀏覽 4分鐘

           ·

          2021-08-14 05:40

          下方查看歷史精選文章

          重磅發(fā)布 - 自動化框架基礎(chǔ)指南pdf
          大數(shù)據(jù)測試過程、策略及挑戰(zhàn)

          測試框架原理,構(gòu)建成功的基石

          在自動化測試工作之前,你應(yīng)該知道的10條建議

          在自動化測試中,重要的不是工具


                  算法復(fù)雜度是在《數(shù)據(jù)結(jié)構(gòu)》這門課程的第一章里出現(xiàn)的,因?yàn)樗晕⑸婕暗揭恍?shù)學(xué)問題,所以很多同學(xué)感覺很難,加上這個概念也不是那么具體,更讓許多人復(fù)習(xí)起來無從下手,下面我們就這個問題給各位考生進(jìn)行分析。


          首先了解一下幾個概念。


          一個是時間復(fù)雜度,


          一個是漸近時間復(fù)雜度。


          前者是某個算法的時間耗費(fèi),它是該算法所求解問題規(guī)模n的函數(shù),而后者是指當(dāng)問題規(guī)模趨向無窮大時,該算法時間復(fù)雜度的數(shù)量級。


          當(dāng)我們評價一個算法的時間性能時,主要標(biāo)準(zhǔn)就是算法的漸近時間復(fù)雜度,因此,在算法分析時,往往對兩者不予區(qū)分,經(jīng)常是將漸近時間復(fù)雜度T(n)=O(f(n))簡稱為時間復(fù)雜度,其中的f(n)一般是算法中頻度最大的語句頻度。


          此外,算法中語句的頻度不僅與問題規(guī)模有關(guān),還與輸入實(shí)例中各元素的取值相關(guān)。但是我們總是考慮在最壞的情況下的時 間復(fù)雜度。以保證算法的運(yùn)行時 間不會比它更長。


          常見的時 間復(fù)雜度,按數(shù)量級遞增排列依次為:

          •     常數(shù)階O(1)

          •     對數(shù)階O(log2n)

          •     線性階O(n)

          •     線性對數(shù)階O(nlog2n)

          •     平方階O(n^2)

          •     立方階O(n^3)

          •     k次方階O(n^k)

          •     指數(shù)階O(2^n)


          下面我們通過例子加以說明,讓大家碰到問題時知道如何去解決。


          1、設(shè)三個函數(shù)f,g,h分別為 f(n)=100n^3 n^2 1000 , g(n)=25n^3 5000n^2 , h(n)=n^1.5 5000nlgn


          請判斷下列關(guān)系是否成立:
          (1) f(n)=O(g(n))
          (2) g(n)=O(f(n))
          (3) h(n)=O(n^1.5)
          (4) h(n)=O(nlgn)


          這里我們復(fù)習(xí)一下漸近時 間復(fù)雜度的表示法T(n)=O(f(n)),這里的"O"是數(shù)學(xué)符號,它的嚴(yán)格定義是"若T(n)和f(n)是定義在正整數(shù)集合上的兩個函數(shù),則T(n)=O(f(n))表示存在正的常數(shù)C和n0 ,使得當(dāng)n≥n0時都滿足0≤T(n)≤C?f(n)。"用容易理解的話說就是這兩個函數(shù)當(dāng)整型自變量n趨向于無窮大時,兩者的比值是一個不等于0的常數(shù)。這么一來,就好計(jì)算了吧。


          ◆ (1)成立。題中由于兩個函數(shù)的最高次項(xiàng)都是n^3,因此當(dāng)n→∞時,兩個函數(shù)的比值是一個常數(shù),所以這個關(guān)系式是成立的。
          ◆ (2)成立。與上同理。
          ◆ (3)成立。與上同理。
          ◆ (4)不成立。由于當(dāng)n→∞時n^1.5比nlgn遞增的快,所以h(n)與nlgn的比值不是常數(shù),故不成立。


          2、設(shè)n為正整數(shù),利用大"O"記號,將下列程序段的執(zhí)行時 間表示為n的函數(shù)。
          (1) i=1; k=0
          while(i<n)
          { k=k 10*i;i ;
          }
          解答:T(n)=n-1, T(n)=O(n), 這個函數(shù)是按線性階遞增的。


          (2) x=n; // n>1
          while (x>=(y 1)*(y 1))
          y ;
          解答:T(n)=n1/2 ,T(n)=O(n1/2), 最壞的情況是y=0,那么循環(huán)的次數(shù)是n1/2次,這是一個按平方根階遞增的函數(shù)。


          (3) x=91; y=100;
          while(y>0)
          if(x>100)
          {x=x-10;y--;}
          else x ;
          解答:T(n)=O(1), 這個程序看起來有點(diǎn)嚇人,總共循環(huán)運(yùn)行了1000次,但是我們看到n沒有? 沒。這段程序的運(yùn)行是和n無關(guān)的,就算它再循環(huán)一萬年,我們也不管他,只是一個常數(shù)階的函數(shù)。


          微信搜一搜 或 長按加群
          開源優(yōu)測


          瀏覽 81
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩AV东京热一 | 2025夜夜撸 | 一级黄色免费电影 | 日韩av成人电影在线观看 | 男人天堂影视av 欧美成人免费性爱 |