国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

算法復雜度T(n)推算

2019-11-06 06:37:51
字體:
來源:轉載
供稿:網友
在算法分析中,我們將語句總的執行次數記為T(n)進而分析T(n)隨n的變化情況確認T(n)的數量級。一般情況下,T(n)隨n增大變化最緩慢的算法為最優算法。

根據定義,T(n)的求法是很簡單的,也就是簡單的數數。舉個例子:
int i;for(i=0;i<n;i++){/*...*/};這里int 執行一次,for循環里的語句執行n次,所以T(n)=n+1;但是當n變大時,這個常數就顯得無足輕重了,所以它的算法復雜度為O(n)。

同樣的,對于下面的代碼:
int i,j;for(i=0;i<n;i++)    for(j=0;j<n;j++){/*...*/};這里int 執行一次,嵌套的for執行了n*n次,所以T(n)=n2+1;同理,它的復雜度為O(n2)。

那么,下面的代碼算法復雜度為多少呢?
int i,j;  for(i=0;i<n;i++)    for(j=i;j<n;j++){/*...*/};這段代碼,int 執行一次,下面的for執行了n+(n-1)+(n-2)+...+1次,所以T(n)=1+(1+n)*n/2=n2/2+n/2+1。當n增大時,1和n/2都顯得無足輕重了,只剩下n2/2,但是之前說過大O只考慮階數,所以復雜度應該為O(n2)

再來看看下面的代碼:

int i=1;while(i<n)    i*=2;每次執行i都乘以2,設執行次數為x,那么2x≥n,我們只取等于的情況,得到x=log2n。所以這個循環的復雜度為O(logn),底數大小其實在n很大的時候是無足輕重的,所以不做考慮。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁乡县| 萨嘎县| 广水市| 芜湖县| 平遥县| 四子王旗| 泰来县| 通海县| 永靖县| 和静县| 炉霍县| 灵武市| 瓦房店市| 贵州省| 开阳县| 麻城市| 泰和县| 精河县| 罗平县| 宁国市| 连南| 横山县| 云梦县| 石屏县| 万全县| 大冶市| 绵竹市| 汾阳市| 萨嘎县| 新津县| 潞西市| 恩施市| 凤阳县| 南康市| 通榆县| 平定县| 兴业县| 杂多县| 阿鲁科尔沁旗| 综艺| 彭水|