i=s=0while(s<n) {i++; s+=i; }
熱心網友
這個題不難給你一個相似的例子,你照著來吧一個特定算法的“運行工作量”的大小,只依賴于問題的規模(通常用整數量n表示),或者說,它是問題規模的函數。假如,隨著問題規模n的增長,算法執行時間的增長率和f(n)的增長率相同,則可記作: T (n) = O(f(n)) 稱T (n) 為算法的漸近時間復雜度(Asymptotic Time Complexity),簡稱時間復雜度。O是數量級的符號。 下面我們探討一下如何估算算法的時間復雜度 算法 = 控制結構 + 原操作(固有數據類型的操作) 算法的執行時間=原操作(i)的執行次數×原操作(i)的執行時間 算法的執行時間與原操作執行次數之和成正比 我們先介紹一個概念: for(j=1;j<=n;++j) for(k=1;k<=n;++k){++x;x+=x;} 語句重復執行的次數被稱為語句的頻度(Frequency Count)上程序段中++x的語句頻度就是n2。 我們經常采用:從算法中選取一種對于所研究的問題來說是基本操作的原操作,以該基本操作在算法中重復執行的次數作為算法運行時間的衡量準則。這個原操作多數情況下是最深層次循環內的語句中的原操作。 例如: for (i=1; i<=n; ++i) for (j=1; j<=n; ++j) { c[i,j] = 0; for (k=1; k<=n; ++k) c[i,j] += a[i,k]*b[k,j]; }該算法的基本操作是乘法操作。時間復雜度為 O(n3) 。