海之音
INFOR 36th 學術長 @小海_夢想特急_夢城前
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 |
實際上因為常數關係,經驗成分居多(
理論計算機科學
By 海之音