給五個演算法的時間複雜度為
- A 為 O(N^2)
- B 為 O(Nlog(log N))
- C為 O(N^1.5)
- D 為 O(N^2log(N))
- E 為 O(SQRT(N)
依照執行速度由慢至快排序演算法的時間複雜度?
簡易解法
列出常見時間複雜度由快至慢
O(1)
O(logn)
<-- E: O(SQRT(N))即開根號N=N^0.5
O(n)
<--B :O(Nlog(log N))正確位置
O(nlogn)<--B不過它把logn在切一半變成log(logn),會比O(nlogn)小
<-- C :O(N^1.5)
O(n^2) <--A
<--D :O(N^2log(N))
O(n^3)
O(2^n)
O(n!)
所以由慢至快排序演算法的時間複雜度為,D,A,C,B,E。
複雜解法
假如不記得常見時間複雜度由快至慢是什麼,可假定n為任一個資料量,我這裡假定為8,將8帶入關係式可得執行次數。
A 為 O(N^2)
資料量為8,執行次數64
B 為 O(Nlog(log N))
8log (log 8)=8log3=log3^8=log6561
2^12=4096
2^13=8192 故介於12-13之間
C為 O(N^1.5)
8^1 ½=8^3/2=(8^½)^3
8^½=8開平方=介於4^½-9^½=約等於2-3=約2.8
2.8^3=21.952
D 為 O(N^2log(N))
8^2log(8)=64*3=192
E 為 O(SQRT(N))
8^½=8開平方=約2.8
演算法與執行次數為
A 64
B 12.
C 21.952
D 192
E 約2.8
所以由慢至快排序演算法的時間複雜度為,D,A,C,B,E。
沒有留言:
張貼留言
寫下幸福點子吧!