一段程式執行的時間是無法準確技術的,通常安裝程式執行次數來估算,用t(n)表示。用大寫字母o表示演算法時間複雜度,稱為演算法的時間漸進複雜度。
(1)時間複雜度為o(1)的情況
程式共執行69次,只要是執行次數為常數,t(n)=o(1)。int i=3;
//執行1次
while(i<
99) //執行34次
i=i+3;
//執行33次
(2)時間複雜度為o(n)
程式共執行2n+3次,只取最高端別的項,去掉該項係數,那麼t(n)=o(n)。int i,s=0;
//執行1次
for(i=
0;i)//執行n+1次
s=s+1;
//執行n次
prinf
("%d"
,s);
//執行1次
(3)時間複雜度為o(n2)
程式共執行2n2 +2n+2次,去最高項,去常數,那麼t(n)=o(n2)。int i,j,s=0;
//執行1次
for(i=
0;i)//執行n+1次
for(j=
0;j)//執行n(n+1)次
s=s+1;
//執行n^2次
(4)常見時間複雜度按照數量級別遞增排列
常數階o(1),對數階o(log2n),線性階o(n),線性對數階o(nlog2n),平方階o(n2),立方階o(n3),……,k次方階o(nk)和指數階o(2n)。
求解演算法的時間複雜度
求解演算法的時間複雜度的具體步驟是 找出演算法中的基本語句 演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。計算基本語句的執行次數的數量級 只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函式中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的係數。這樣能...
dfs時間複雜度 時間複雜度 空間複雜度
時間複雜度的數學證明方法相對比較複雜,通常在工程實際中,會分析就好。注意 只看最高複雜度的運算 int for for for for int遞迴如何分析時間複雜度?常數係數可以忽略,在分析時不用考慮,只要說以上術語即可。主定理 master throrem 上述第四種是歸併排序,所有排序演算法,最...
時間複雜度 空間複雜度
時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...