Professional Documents
Culture Documents
Dùng các cấu trúc dữ liệu hợp lý, cải tiến giải thuật,
sử dụng các phát biểu hợp lý cũng giúp làm tăng
đáng kể về hiệu suất thời gian chạy của chương
trình
int n = strlen(str)
for(i =0; i < n; i++)
….
if (x==0) if (!x)
struct Item
<data-type> data;
};
GT A GT C
GT B GT tốt
6n Trung bình
Thời gian thực hiện
5n
Tốt nhất
4n
3n
2n
1n
1 2 3 4 5 6 7 8 9 10 11 12 …..
Kích thước dữ liệu đầu vào
1,00E+09
1,00E+08 n
log n
1,00E+07
sqrt n
n log n
1,00E+06
100n
n^2
1,00E+05
n^3
T(n)
1,00E+04
1,00E+03
1,00E+02
1,00E+01
1,00E+00
1,00E-01
2 4 8 16 32 64 128 256 512 1024
n
1,00E+143
1,00E+131
1,00E+119 n
log n
1,00E+107
sqrt n
1,00E+95 n log n
100n
1,00E+83 n^2
T(n)
n^3
1,00E+71
2^n
1,00E+59
1,00E+47
1,00E+35
1,00E+23
1,00E+11
1,00E-01
2 4 8 16 32 64 128 256 512 1024
n
Running Time
tồi tệ nhất (chặn trên của hàm thời
gian)
n0 Input Size
3
Cấu trúc dữ liệu 2008 - Văn Thiên Hoàng - Khoa CNTT 45
Hàm chặn dưới
Cho hàm f(n), f(n) bị chặn dưới bởi g(n) nếu tồn tại các hằng
c, n0 sao cho:
- cg(n) ≤ f(n) với mọi n ≥ n0 (tức là f(n) có tỉ suất tăng là g(n) và
ký hiệu f(n) là Ω (g(n))
- Lưu ý: O(cf(n)) = O(f(n))
với c là hằng số, O(c) = O(1). f (n )
Thường dùng để biểu diễn cg(n)
Running Time
n0 Input Size
g(n)/4 = n2/4
= n2/2 – n2/4
≤ n2/2 – 9 for all n ≥ 6 f(n)=n2/2-7
< n2/2 – 7
Thus, f(n)= Ω (g(n)).
c g(n)=n2/4
a0nlgn + O(n)
Với n lớn, ta không cần tìm giá trị của a1 hay a2.