下列小題時間複雜度是什麼
(一) 2022 n ln n+111 n^1.001
(二) 2022 n^3 2^n+111 n^2 3^n
(三)2022 n!+2^n
(一)對於時間複雜度而言,n越大增長得越快。只看最大的表達式即可,因為如果只看小的會錯估,跟實際執行跑很慢對應不起來。如有一表達式為2^n+n!
2^n <--只看小的
|--| <--假設2^n資料量的可視化執行時間
n! <--實際上執行時間會被它拖慢
|----------|<--n!的可視化執行時間
2022 n ln n+111 n^1.001
去掉常數項2022,111,比較n ln n 與n^1.001,n ln n可表示為nlogn ,nlogn比n^1.001增長快,所以時間複雜度是O(nlog n)
注意:ln=log
(二)
2022 n^3 2^n+111 n^2 3^n
去掉常數項2022,111,比較n^3 2^n與n^2 3^n,n^2 3^n增長比較快,所以時間複雜度為O(n^2 3^n)
(三)
2022 n!+2^n
去掉常數項2022,比較n!與2^n,n!增長比較快,所以時間複雜度為O(n!)
另一個題目
請用 Big-O 符號來表示下列函式的成長速率,並說明之:
T(n)=3n^3+7n^3n^0.5+n^3logn
解題關鍵:增長速度由慢至快 logn, n, nlogn, n^2
判斷n^3,n^3n^0.5,n^3logn哪個大?
n^3
n^3.5
n^3logn
n^3.5比n^3增長快
而n^3.5與n^3logn相比誰增長快?它們的不同在一個n^3乘n^0.5,另一個n^3乘logn ,因任一個正次方多項式都會增長比logn快,所以n^3.5會增長比n^3logn快。得增長由慢到快n^3logn, n^3, n^3.5。
答案是O(n^3.5)。
沒有留言:
張貼留言
寫下幸福點子吧!