給幾個演算法的時間複雜度,依照執行速度由慢至快排序演算法的時間複雜度

 給五個演算法的時間複雜度為

  • 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。


沒有留言:

張貼留言

寫下幸福點子吧!