Complexity
Definition
一份程式的好壞有很多面向
如何評估?
引用 time.h 直接測量
#include <time.h>
#include <iostream>
int main() {
clock_t start, finish;
start = clock();
// ...
finish = clock();
std::cout << finish - start;
return 0;
}
變因過多(電腦效能等)
需要實際測量才能得知
假設「基礎運算」運行時間為一單位時間
int a;
a = 1;
a += 3;
將時間表示成相關因素(e.g. 輸入量)的函數 T(n)
考慮將 T(n) 以更簡單的方式描述
Algorithm Analysis
一般來說, C++ 每秒可以跑 1e8 ~ 1e9 (約 3e8)
Python 可能 1e7 或以下(?
複雜度 | 範圍 |
---|---|
10~12 | |
20~23 | |
24~28 | |
500~600 | |
5000~6000 | |
5e3~1e4 |
複雜度 | 範圍 |
---|---|
1e5~5e5 | |
5e5~6e5 | |
1e6~2e6 | |
(輸入) | 1e6~5e6 |
(不含) | 1e7~3e8 |
1e18 |
實際上因為常數關係,經驗成分居多(
理論計算機科學