Do vậy, việc tổ chức để lưu trữ dữ liệu cho chương trình có ý nghĩa rất quan trọng, quyết định rất lớn đến chất lượng cũng như công sức của người lập trình trong thiết kê, cài đặt chươ
Trang 1
"xa in TONG QUAN VE
CAU TRUC DU LIEU & THUAT TOAN
1.1 Khái niệm về cấu trúc dữ liệu va thuật toán
1.1.1 Câu trúc dữ liệu 1.1.2 Thuật toán
1.1.3 Sự liên hệ giữa câu trúc dữ liệu và thuât toán 1.2 Phân tích giải thuật
1.2.1 Phân tích thời gian thực hiện giải thuật
1.2.2 Độ phức tạp tính toán của giải thuật
1.2.3 Xác định độ phức tạp tính toán 1.3 Bài tập
Trang 2
1.1 Khái niệm về câu trúc dữ liệu và thuật toán
1.1.1 Cầu trúc dữ liệu
Bất kỳ một chương trình máy tính nào cũng cân có
dữ liệu để xử lý
* Dữ liệu vào (mnput data), dữ liệu trung gian xử lý
hoặc dữ lieu ra (output data)
Do vậy, việc tổ chức để lưu trữ dữ liệu cho chương
trình có ý nghĩa rất quan trọng, quyết định rất lớn đến
chất lượng cũng như công sức của người lập trình
trong thiết kê, cài đặt chương trình
© Dương Thành Phết-www.thayphet.net
Trang 3
Z“
1.1.2 Giải thuật
v Giải thuật - Thuật giải - Thuật toán dùng để chỉ
phương pháp hay cách thức đề giải quyết vân đề
vGiải thuật có thể được minh họa bằng ngôn ngữ tự
nhiên (natural language), bằng sơ đồ (flow chart) hoặc bằng mã giả pseudo code)
vTrong thực tê, giải thuật thường được minh hoa
bằng mã giả tựa ngôn ngữ lập trình nào đó như C,
Pascal,
© Duong Thanh Phét-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á
Trang 4
1.1.3 Sự liên hệ giữa câu trúc dữ liệu và giải thuật
Câu trúc dữ liệu tốt, nắm vững giải thuật thực hiện thì
việc thê hiện chương trình bằng một ngôn ngữ cụ thể
chỉ là van dé thời gian
vMột chương trình máy tính chỉ có thể được hoàn thiện
khi có đầy đủ cả Câu trúc dữ liệu để lưu trữ dữ liệu và
Giải thuật xử lý dữ liệu theo yêu câu của bài toán đặt ra
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á
Trang 5Z“
1.2 Phân tích giải thuật
1.2.1 Các tiêu chuẩn đánh giá cấu trúc dữ liệu
vPhải tiết kiệm tài nguyên (bộ nhớ trong),
vPhải phản ảnh đúng thực tê của bài toán,
vPhải dễ dàng trong việc thao tác dữ liệu
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á
Trang 6
1.2.2 Đánh giá độ phức tạp của thuật toán
Đánh giá độ phức tạp của một thuật toán là ước
lượng thời gian thực hiện thuận toán T(n) để so sánh tương đồi giữa các thuật toán
Thời gian thực hiện một thuật toán còn phụ thuộc rất
nhiều điều kiện khác như: câu tạo máy tính, dữ liệu
đưa vào, ., ta chỉ xét trên mức độ của lượng dữ liệu
đưa vào đề ước lượng thời gian thực hiện:
Trong trường hợp tốt nhất: Tmin Trong trường hợp xâu nhất: Tmax
Và ước lượng thời gian trung binh Tavg
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á
Trang 7
Z“
1.2.3 Phân tích thuật toán
Bảng các cấp thời gian thực hiện thuật toán được sử
dụng rộng rãi
O(n) Binh phuong O(n?) Lap phuong
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á
Trang 8
Ví dụ: Tìm trong dãy số a1, a2, , an một phân tử có giá
trị bằng x
Vào: Dãy số nguyên a[N] và khoá cân tìm x
Ra: Vị trí phần tử có khoá x hoặc là -1 nêu không tìm thay
Int Timtuyentinh (int aj], irnfN, Inf x)
{
Inf I;
I=0;
while((i < N) && (ali] != x)
[=[+7;
if( i == N)
retum -† ; hết mảng không có x
else
retum ¡ ; alï] là phân tử có khóa x
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường TC TÂY NAM Á
Trang 9
vNếu alO] = x thi lệnh ¡ := I + †1 trong vòng lặp thực hiện
1lân Do đó thời gian tính tôt nhât của thuật toán là O(1)
vNếu x không có trong dãy thì lệnh ¡ := ¡ + 1được thực
hiện n lân Vi thê thời gian tính xâu nhat la O(n)
v Thời gian tính trung bình của thuật toán
= Néu x duoc tim thay ở vị trí thứ ¡ thì lệnh ¡ := ¡ + 1 thực hiện I lân (ï = 1, 2, , n),
: Nếu x không xuất hiện trong dãy thì lệnh ¡ := ¡ + 1
thực hiện n lân
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á
Trang 10
Ta có:
[(1+2+ +n)+n]/(n+1)<(n+n)/(n+1)=n
Vậy thời gian tính trung bình của thuật toán là O(n)
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường TC TÂY NAM Á