Tải bản đầy đủ (.pptx) (36 trang)

C1 tong quan ve CTDL va GT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (370.16 KB, 36 trang )

CẤU TRÚC DỮ LIỆU VÀ GIẢI
THUẬT


NỘI DUNG

CHƯƠNG 1: Tổng quan về CTDL và giải thuật
CHƯƠNG 2: đệ quy và giải thuật đệ quy
CHƯƠNG 3: Danh sách
CHƯƠNG 4: Các phương pháp sắp xếp cơ bản
CHƯƠNG 5: Tìm kiếm


Hình thức đánh giá
 Z = 0.4X + 0.6Y
 X: kiểm tra định kì, đánh giá thơng qua bài kiểm tra (lý thuyết hoặc thực hành)
 Y: kiểm tra kết thúc học phần, gồm bài thi lý thuyết (45-60p) và thực hành (60-120p)
 Y = ½ điểm lý thuyết + điểm thực hành


Chương 1: tổng quan về CTDL và GT

Mối quan hệ giữa CTDL và giải thuật
Các tiêu chuẩn đánh giá CTDL
Các kiểu dữ liệu cơ bản
Các kiểu dữ liệu có cấu trúc
Kiểu con trỏ
Đánh giá độ phức tạp giải thuật


Chương 1: tổng quan về CTDL và giải thuật


1.1 Mối quan hệ giữa CTDL và giải thuật
 Bài toán Tin học


Giải các bài toán thực tế



Gồm các đối tượng dữ liệu và các yêu cầu xử lý trên các đối tượng đó

Tổ chức biểu diễn các đối tượng thực tế
Giải quyết Bài tốn Tin
học?

Xây dựng trình tự các thao tác xử lý
trên các đối tượng dữ liệu đó


Chương 1: tổng quan về CTDL và giải thuật
1.1 Mối quan hệ giữa CTDL và giải thuật
 Công thức

Cấu trúc dữ liệu + Giải thuật = Chương trình

 Hai yếu tố tạo nên một chương trình máy tính: Cấu trúc dữ liệu và Giải thuật
 Đối tượng xử lý của giải thuật chính là dữ liệu
 Với một cấu trúc dữ liệu sẽ có những giải thuật tương ứng
 Khi cấu trúc dữ liệu thay đổi thường giải thuật cũng thay đổi theo
 Một cấu trúc dữ liệu tốt có thể giúp giải thuật thực hiện tốt hơn, nhanh hơn, tiết kiệm tài nguyên,
ngoài ra giải thuật cũng đơn giản và dễ hiểu hơn



Chương 1: tổng quan về CTDL và giải thuật
1.2. Các tiêu chuẩn đánh giá CTDL
Một cấu trúc dữ liệu tốt phải thỏa mãn:

 Phản ánh đúng thực tế
 Phù hợp với các thao tác trên đó
 Tiết kiệm tài nguyên hệ thống


Chương 1: tổng quan về CTDL và giải thuật
1.2. Các tiêu chuẩn đánh giá CTDL

Một cấu trúc dữ liệu tốt phải thỏa mãn:

 Phản ánh đúng thực tế


Tiêu chuẩn quan trọng nhất, quyết định tính đúng đắn của tồn bộ bài toán



Lựa chọn CTDL biểu diễn được dữ liệu của bài toán



Cần xem xét tới các trạng thái biến đổi của dữ liệu, yêu cầu của chương trình để lựa chọn được CTDL phù hợp



Ví dụ: một số tình chọn cấu trúc lưu trữ sai
Chọn một biến số nguyên int để lưu trữ tiền thưởng bán hàng (được tính theo cơng thức tiền thưởng
bán hàng = trị giá hàng * 5%), do vậy sẽ làm tròn mọi giá trị tiền thưởng gây thiệt hại cho nhân viên bán
hàng. Trường hợp này phải sử dụng biến số thực để phản ánh đúng kết quả của công thức tính thực tế


Chương 1: tổng quan về CTDL và giải thuật
1.2. Các tiêu chuẩn đánh giá CTDL

Một cấu trúc dữ liệu tốt phải thỏa mãn:

 Phản ánh đúng thực tế


Tiêu chuẩn quan trọng nhất, quyết định tính đúng đắn của tồn bộ bài táon



Lựa chọn CTDL biểu diễn được dữ liệu của bài toán



Cần xem xét tới các trạng thái biến đổi của dữ liệu, yêu cầu của chương trình để lựa chọn được CTDL phù hợp



Ví dụ: một số tình chọn cấu trúc lưu trữ sai

Trong trường trung học, mỗi lớp có thể nhận tối đa 28 học sinh. Lớp hiện có 20 học sinh, mỗi tháng mỗi học sinh đóng học phí $10. Chọn một biến số
nguyên unsigned char (khả năng lưu trữ 0 – 255) để lưu trữ tổng học phí của lớp học trong tháng, nếu xảy ra trường hợp có thêm 6 học sinh được

nhận vào lớp thì giá trị tổng học phí thu được là $260, vượt khỏi khả năng lưu trữ của biến đã chọn, gây ra tình trạng tràn, sai lệch.


Chương 1: tổng quan về CTDL và giải thuật
1.2. Các tiêu chuẩn đánh giá CTDL

Một cấu trúc dữ liệu tốt phải thỏa mãn:

 Phù hợp với các thao tác trên đó


Đối với mỗi ứng dụng, cần chú ý đến thao tác nào được sử dụng nhiều nhất để lựa chọn cấu trúc dữ liệu cho thích
hợp



Tăng tính hiệu quả của dự án: việc phát triển các thuật toán đơn giản, chương trình đạt hiệu quả cao về tốc độ xử



Ví dụ:



Cần viết một chương trình để xử lý các thao tác trên dãy số, ví dụ: nhập vào một dãy số, tính tổng các
phần tử, tìm giá trị lớn nhất, thêm, xóa phần tử…



Nếu lưu trữ các phần tử của dãy số trong 1 biến → tiết kiệm bộ nhớ nhưng không lưu trữ được giá trị

các phần tử đã nhập



Lưu trữ các phần tử của dãy số trong mảng → cài đặt các thuật toán mảng dễ dàng, việc thêm phần tử
có thể dẫn đến việc vượt quá kích thước của mảng


Chương 1: tổng quan về CTDL và giải thuật
1.2. Các tiêu chuẩn đánh giá CTDL

Một cấu trúc dữ liệu tốt phải thỏa mãn:

 Tiết kiệm tài nguyên hệ thống


CTDL chỉ nên sử dụng tài nguyên hệ thống vừa đủ để đảm nhiệm được chức năng của nó



Tiêu chuẩn này nên cân nhắc tùy vào tình huống cụ thể: nếu chương trình cần có những xử lý nhanh thì khi chọn
CTDL yếu tố tiết kiệm thời gian xử lý được ưu tiên hơn so với sử dụng tối ưu bộ nhớ



Ví dụ 1: một số tình huống chọn cấu trúc lưu trữ lãng phí

Sử dụng biến int (2 bytes) để lưu trữ một giá trị cho biết tháng hiện hành . Biết rằng tháng chỉ có thể nhận các giá trị từ 1-12, nên chỉ cần
sử dụng kiểu char (1 byte) là đủ.



Chương 1: tổng quan về CTDL và giải thuật
1.2. Các tiêu chuẩn đánh giá CTDL

Một cấu trúc dữ liệu tốt phải thỏa mãn:

 Tiết kiệm tài nguyên hệ thống


CTDL chỉ nên sử dụng tài nguyên hệ thống vừa đủ để đảm nhiệm được chức năng của nó



Tiêu chuẩn này nên cân nhắc tùy vào tình huống cụ thể: nếu chương trình cần có những xử lý nhanh thì khi chọn
CTDL yếu tố tiết kiệm thời gian xử lý được ưu tiên hơn so với sử dụng tối ưu bộ nhớ



Ví dụ 2: một số tình huống chọn cấu trúc lưu trữ lãng phí

Để lưu trữ danh sách học viên trong một lớp, sử dụng mảng 50 phần tử (giới hạn số học viên trong lớp tối đa là 50). Nếu số lượng học viên thật sự ít hơn 50, thì gây lãng
phí. Trường hợp này cần có một cấu trúc dữ liệu linh động hơn mảng – danh sách liên kết – sẽ được bàn đến trong các chương sau


Chương 1: tổng quan về CTDL và giải thuật
1.3. Các kiểu dữ liệu cơ bản
 Kiểu dữ liệu


Thể hiện bởi:




Tên kiểu dữ liệu



Miền giá trị của dữ liệu



Kích thước dữ liệu



Tập các toán tử tác động lên kiểu dữ liệu


Chương 1: tổng quan về CTDL và giải thuật
1.3. Các kiểu dữ liệu cơ bản
 Các kiểu dữ liệu cơ sở


Kiểu số nguyên



Kiểu số thực




Kiểu kí tự



Kiểu logic


Chương 1: tổng quan về CTDL và giải thuật
1.4. Các kiểu dữ liệu có cấu trúc
 Kiểu chuỗi kí tự


Kiểu dữ liệu có cấu trúc đơn giản nhất và thường các ngơn ngữ lập trình định nghĩa nó như một kiểu cơ bản



Thực chất là một mảng (dãy) các kí tự ghép thành chuỗi



Ví dụ:
char S[10];
char S[] = “ABCDEF”
char *S = “ABCDEF”



Các bài tốn cơ bản: đếm từ, chuẩn hóa chuỗi…



Chương 1: tổng quan về CTDL và giải thuật
1.4. Các kiểu dữ liệu có cấu trúc
 Kiểu mảng


Kiểu dữ liệu gồm tập các phần tử có cùng tên và kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ



Truy cập qua chỉ số



Ví dụ:
int a[10];
a[1] = 100;



Các loại mảng: mảng 1 chiều, mảng nhiều chiều



Các bài toán cơ bản: thêm, xóa phần tử mảng, tìm giá trị, tính tổng…


Chương 1: tổng quan về CTDL và giải thuật
1.4. Các kiểu dữ liệu có cấu trúc
 Kiểu bản ghi (struct)



Kiểu dữ liệu mà mỗi phần tử của nó là tập hơp các giá trị có thể có kiểu dữ liệu khác nhau



Thường dùng để mơ tả những đối tượng có cấu trúc phức tạp, gồm nhiều loại thông tin như sinh viên, nhân sự…



Ví dụ:

struct PERSON
{
char Hoten[];
int NamSinh;
char NoiSinh[];
char GioiTinh; // 0:Nữ, 1: Nam
char DiaChi[];
}


Chương 1: tổng quan về CTDL và giải thuật
1.5. Kiểu con trỏ

 Kiểu dữ liệu dùng để lưu địa chỉ của một đối tượng dữ liệu khác
 Biến thuộc kiểu con trỏ T là biến có

giá trị là địa chỉ của một vùng nhớ chứa giá trị của một biến kiểu T,


hoặc giá trị null

 Ví dụ:
int a = 5;
int *pa = &a;

→ *pa = 5, pa = địa chỉ của biến a trong bộ nhớ


Chương 1: tổng quan về CTDL và giải thuật
1.6. Độ phức tạp của giải thuật
 Một bài tốn có thể có nhiều giải thuật


Giải thuật nào là giải thuật nên lựa chọn?



Tiêu chuẩn nào để lựa chọn giải thuật?



C1:
m=a;



if (m
Ví dụ:




Bài tồn tìm giá trị lớn nhất trong 3 số

if (m


C2:
if (a>b)
if (a>c) m=a;
else m=c;
else
if (b>c) m=b;
else m=c;


Chương 1: tổng quan về CTDL và giải thuật
1.6. Độ phức tạp của giải thuật
 Một bài tốn có thể có nhiều giải thuật


Giải thuật nào là giải thuật nên lựa chọn?



Tiêu chuẩn nào để lựa chọn giải thuật?




C1:
int gt(int n)



int i, S=1;

Ví dụ:



for(i=1;i<=n;i++)
S=S*i;

Bài tốn tính giai thừa của n

return S;



C2:
int gt(int n)
if (n<2) return 1;
return gt=n*gt(n-1)


Chương 1: tổng quan về CTDL và giải thuật
1.6. Độ phức tạp của giải thuật
 Tiêu chí đánh giá



Tính đúng đắn của giải thuật



Tính đơn giản của giải thuật



Yêu cầu về khơng gian



u cầu về thời gian




Khi chương trình chạy 1 lần hoặc một vài lần thì giải thuật chỉ cần dễ hiểu, dễ cài đặt, gỡ lỗi
Khi chương trình chạy nhiều lần, giải thuật cần sử dụng hiệu quả tài nguyên máy tính, đặc biệt chạy càng nhanh
càng tốt  tính hiệu quả của thuật tốn


Chương 1: tổng quan về CTDL và giải thuật
1.6. Độ phức tạp của giải thuật
 Cách đánh giá

Độ phức tạp khơng




Dung lượng bộ nhớ mà
thuật tốn địi hỏi

gian

Người ta chỉ quan tâm
đến độ phức tạp thời
gian

Độ phức tạp thời
gian



Thời gian thực hiện thuật
toán


Chương 1: tổng quan về CTDL và giải thuật
1.6. Độ phức tạp của giải thuật
 Thời gian thực hiện giải thuật


Phụ thuộc vào







Dữ liệu vào
Tốc độ thực hiện các phép tốn của máy tính
Trình biên dịch

Đánh giá thực nghiệm





Viết chương trình rồi cho chạy trên máy tính
Khơng so sánh được các giải thuật với nhau
Tìm cách đánh giá thời gian chạy khơng phụ thuộc vào ngơn ngữ, chương trình dịch, tốc độ máy


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×