Tải bản đầy đủ (.ppt) (29 trang)

Cấu trúc dữ liệu và thuật toán pps

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 (751.53 KB, 29 trang )

[1] Bài giảng CTDL. Nguyễn Hữu Tuân
[2] Cấu trúc dữ liệu và thuật toán. PGS.TS Hoàng Nghĩa Tý.
2007
[3] Ngôn ngữ lập trình C++ và cấu trúc dữ liệu. Nguyễn Việt
Hương. 2007
[4] Data Structure for Game Programmers. Premier Press.
2007
CHƯƠNG I : TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
CHƯƠNG II : MỘT SỐ THUẬT TOÁN TÌM KIẾM VÀ SẮP XẾP
CHƯƠNG III : DANH SÁCH LIÊN KẾT - NGĂN XẾP VÀ HÀNG ĐỢI
CHƯƠNG IV : CÂY
CHƯƠNG I : TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
1. Cấu trúc dữ liệu là gì ? :
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
1. Cấu trúc dữ liệu là gì ? :
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
1. Cấu trúc dữ liệu là gì ? :
Int
a
Int
c
Int
b
Int
d
Int
a[1]
Int
a[2]


Int
a[3]
Int
a[4]
a
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
1. Cấu trúc dữ liệu là gì ? :

Dữ liệu không có cấu trúc (đơn giản):

Int, Char, Boolean, Float…

Mỗi đối tượng dữ liệu là một phần tử đơn lẻ.

Dữ liệu có cấu trúc:

Được cấu thành bởi các phần tử dữ liệu đơn giản.

Mảng, Chuỗi, Danh sách, Tập tin.

Tổ chức dữ liệu để lưu trữ.

Mô hình dữ liệu để biễu diễn thông tin
2. Một số ví dụ
A
0 1 2 3 4 5
Array 1 chiều
4
4
14

14
22
22
38
38
27
27
15
15
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
3 5 10 13 6 9
4 25 16 23 1 11
88 21 13 4 22 19
[0][0] [0][1] [0][2] [0][3] [0][4] [0][5]
[1][0] [1][1] [1][2] [1][3] [1][4] [1][5]
[2][0] [2][1] [2][2] [2][3] [2][4] [2][5]
Cột
0
1
2
0 1 2 3 4 5
Dòng
Array 2 chiều
Array 2 chiều
2. Một số ví dụ
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
struct <TenCauTruc>
{
<Kiểu> Biến 1;
<Kiểu> Biến 2;

};
Danh sách
Sinh viên (Họ tên, MSSV, Năm sinh)
typdef struct STUDENT
{
char HoTen[255];
char MSSV[3];
int NamSinh;
}
2. Một số ví dụ
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
3. Vai trò cấu trúc dữ liệu trong lập trình
Cấu Trúc Dữ Liệu + Giải Thuật = Chương trình
(Data Structures + Algorithms = Program)
I. KHÁI NIỆM VỀ CẤU TRÚC DỮ LIỆU
II. GIẢI THUẬT
1. Khái niệm giải thuật :
Khái niệm giải thuật hay thuật giải mà nhiều khi còn
được gọi là thuật toán dùng để chỉ phương pháp hay cách
thức (method) để giải quyết vần đề.
Giải thuật có thể được minh họa bằng ngôn ngữ tự
nhiên (natural language), bằng lưu đồ (flow chart) hoặc
bằng mã giả (pseudo code).
II. GIẢI THUẬT
2. Cách viết một giải thuật ( Biểu diễn giải thuật )
A. Ngôn ngữ tự nhiên
C. Mã giả (pseudo code)
B. Lưu đồ (flow chart)

Điểm bắt đầu / Kết thúc giải thuật


Thao tác nhập/ xuất dữ liệu

Thao tác xử lý

Thao tác lựa chọn

Đường tiến trình

Chú thích

Ký hiệu kết nối cùng trang hay
sang trang khác
Begin
End
2
15
Ví dụ: Hãy dùng lưu đồ mô tả bài toán tính Chu vi và Diện tích hình
vuông khi người sử dụng cho biết số đo cạnh của nó.
Bắt đầu
Nhập cạnh
CV=cạnh x 4
DT=cạnh x cạnh
Xuất kết quả
CV,DT
Kết thúc
Giải thuật Tính CV, DT hình vuông;
{khai báo các biến}
Cạnh,CV,DT: số thực;
BEGIN

Nhập vào số đo cạnh;
CV = cạnh x 4;
DT = cạnh x cạnh;
Xuất ra CV (in kết quả trên màn hình)
Xuất ra DT (in kết quả trên màn hình)
END;
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
1. Dạng tổng quát
f (n)
n : kích cỡ đầu vào của dữ liệu
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
2. Vòng lặp đơn
1000
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i + 1
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i + 1
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i + 2
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i + 2
500

III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
2. Vòng lặp đơn
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
2. Vòng lặp đơn
1000
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i + 1
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i + 1
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i x 2
1 i = 1
2 loop ( i <= 1000 )
1 application code
2 i = i x 2
log
2
1000
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
2. Vòng lặp đơn
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
3. Vòng lặp lồng nhau
1 i = 1
2 loop ( i <= 10 )

1 j = 1
2 loop (j <= 10)
1 application code
2 j = j x 2
3 i = i + 1
1 i = 1
2 loop ( i <= 10 )
1 j = 1
2 loop (j <= 10)
1 application code
2 j = j x 2
3 i = i + 1
Số lần lặp = Outer loop x Inner loop
n log
2
n
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
3. Vòng lặp lồng nhau
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
3. Vòng lặp lồng nhau
1 i = 1
2 loop ( i <= 10 )
1 j = 1
2 loop (j <= 10)
1 application code
2 j = j + 1
3 i = i + 1
1 i = 1
2 loop ( i <= 10 )
1 j = 1

2 loop (j <= 10)
1 application code
2 j = j + 1
3 i = i + 1
n
2
III. ĐỘ PHỨC TẠP CỦA GIẢI THUẬT (Algorithm Efficiency)
3. Vòng lặp lồng nhau
1 i = 1
2 loop ( i <= 10 )
1 j = 1
2 loop (j <= i)
1 application code
2 j = j + 1
3 i = i + 1
1 i = 1
2 loop ( i <= 10 )
1 j = 1
2 loop (j <= i)
1 application code
2 j = j + 1
3 i = i + 1
1 + 2 + …+ n = n(n+1)/2

×