Đại Học Sư Phạm Tp. Hồ Chí Minh
Đại Học Sư Phạm Tp. Hồ Chí Minh
Phần: CẤU TRÚC DỮ LIỆU
ÔN TỐT NGHIỆP
ÔN TỐT NGHIỆP
2
2
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
2
2
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
2
2
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
NỘI DUNG ÔN TẬP
•
Khái ni m và vai trò c a c u trúc d li u.ệ ủ ấ ữ ệ
•
C u trúc d li u m ngấ ữ ệ ả :
–
Thu t toán tìm ki m trên m ng: tìm tuy n tính và tìm nh phân.ậ ế ả ế ị
–
Thu t toán s p x p trên m ng: S p x p đ i ch tr c ti p, s p x p chèn, ậ ắ ế ả ắ ế ổ ỗ ự ế ắ ế
s p x p n i b t, Heap sort, Quicksort,…ắ ế ổ ọ
•
C u trúc d li u đ ngấ ữ ệ ộ : danh sách liên k tế
–
Danh sách liên k t đ n: Ý ngh a và các thao tác(thêm, xóa nút, tìm ki m, s p ế ơ ĩ ế ắ
x p,…)ế
–
Danh sách liên k t kép: Ý ngh a và các thao tác(thêm, xóa nút, tìm ki m, s p ế ĩ ế ắ
x p,…)ế
–
ng d ng c a DSLK: Stack và Queue.Ứ ụ ủ
•
C u trúc d li u câyấ ữ ệ : cây nh phân tìm ki m.ị ế
–
Khái ni m v cây nh phân tìm ki mệ ề ị ế
–
Các th t c: thêm, xóa, tìm ki m, ủ ụ ế
3
3
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
3
3
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
3
3
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
1. Cấu trúc dữ liệu mảng
•
Các gi i thu t tìm ki mả ậ ế
–
Tìm ki m tuế y n tínhế (Sequence Search)
–
Tìm ki m nh phân (Binary Search)ế ị
•
Các gi i thu t s p x pả ậ ắ ế
–
S p x p đ i ch tr c ti pắ ế ổ ỗ ự ế
–
S p x p ch n tr c ti pắ ế ọ ự ế
–
S p x p chèn tr c ti pắ ế ự ế
–
S p x p n i b tắ ế ổ ọ
–
S p x p n i b t c i ti nắ ế ổ ọ ả ế
–
Shell sort
–
Heap sort
–
Quick sort
–
Merge sort
4
4
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
4
4
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
4
4
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Cấu trúc mảng một chiều
•
Yêu c uầ
–
Trình bày ý t ng gi i thu tưở ả ậ
–
Cho ví d minh h aụ ọ
–
Bi u di n gi i thu tể ễ ả ậ
•
Biểu diễn giải thuật bằng mã giả
•
Biểu diễn giải thuật bằng sơ đồ khối
–
Cài đ t b ng ngôn ng C/C++ặ ằ ữ
–
Cho bi t k t qu th c hi n ch y ế ế ả ự ệ ạ
t ng b c gi i thu từ ướ ả ậ
5
5
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
5
5
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
5
5
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Giải thuật tìm kiếm tuyến tính
•
Bài toán
–
Cho m ng a có n s nguyên (n 100)ả ố ≤
–
Yêu c uầ : cho bi t s nguyên x cóế ố t n ồ
t i trong m ng a không ? ạ ả
•
Nếu có cho biết vị trí đầu tiên x xuất hiện
trong mảng
•
Ngược lại thông báo x không tồn tại trong
mảng.
6
6
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
6
6
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
6
6
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Giải thuật tìm kiếm tuyến tính
•
Ví dụ
–
Cho m ng a có ả 7 ph n t (n = ầ ử 7) nh ư
sau:
4 1 6 7 3 5 8
–
Yêu c uầ :
•
Tìm x = 3 ?
•
Tìm x = 10 ?
–
K t quế ả:
•
X = 3 xuất hiện ở vị trí thứ 5 trong mảng
•
X = 10 không tồn tại trong mảng
7
7
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
7
7
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
7
7
)
)
3 5 8 ~91 6 7 ~
0 1 2 3 4 5 6 7 8 9
X=3
4
N
Giải thuật tìm kiếm tuyến tính
Giải thuật
Tiến hành so sánh x lần lượt với phần tử thứ 0,
thứ 1,… của mảng cho đến khi gặp khóa cần
tìm, hoặc hết mảng mà không tìm thấy giá trị.
~
8
8
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
8
8
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
8
8
)
)
Giải thuật tìm kiếm tuyến tính
•
Ví dụ
–
Cho mảng a có 7 phần tử (n = 7) như sau:
4 1 6 7 3 5 8
–
Yêu cầu:
•
Tìm x = 3 ?
–
Kết quả:
•
X = 3 xuất hiện ở vị trí thứ 5 trong mảng
Lần lặp i a[i] = x? Kết quả
1 0 a[0] = 4 ≠ x = 3 i = i + 1 = 1
2 1 a[1] = 1 ≠ x = 3 i = i + 1 = 2
3 2 a[2] = 6 ≠ x = 3 i = i + 1 = 3
4 3 a[3] = 7 ≠ x = 3 i = i + 1 = 4
5 4 a[4] = 3 ≠ x = 3 Kết thúc gt
9
9
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
9
9
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
9
9
)
)
Giải thuật tìm kiếm nhị phân
•
Bài toán
–
Cho mảng a có n số nguyên (n ≤ 100)
–
Yêu cầu: cho biết số nguyên x có tồn tại trong
mảng a không?
•
Nếu có cho biết vị trí đầu tiên x xuất hiện trong
mảng
•
Ngược lại thông báo x không tồn tại trong
mảng.
–
Điều kiện:
•
Mảng a đã được sắp thứ tự tăng
10
10
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
10
10
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
10
10
)
)
7 8 9 ~93 5 6 ~
0 1 2 3 4 5 6 7 8 9
X=5
1
R
Giải thuật tìm kiếm nhị phân
~
Gi i thu tả ậ
T i m i b c ti n hành so sánh X v i ph n t n m gi a ạ ỗ ướ ế ớ ầ ử ằ ữ
c a dãy tìm ki m hi n hành. D a vào k t qu so sánh này đ ủ ế ệ ự ế ả ể
quy t đ nh gi i h n tìm ki m b c k ti p là n a trên ế ị ớ ạ ế ở ướ ế ế ữ
hay n a d i c a dãy hi n hành.ữ ướ ủ ệ
L N
11
11
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
11
11
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
11
11
)
)
Giải thuật tìm kiếm nhị phân
B c 1: ướ left = 0; right = N-1; //tìm trên t t c các ph n tấ ả ầ ử
B c 2: mid = (left + right)/2ướ ; //l y m c đ so sánhấ ố ể
So sánh a[mid] v i x có 3 kh n ngớ ả ă
- x=a[mid] : tìm th y. D ngấ ừ
- x<a[mid] : left = mid +1; //tìm ti p trong dãy aế
left
…a
mid-1
- x>a[mid] : right = mid -1; //tìm ti p trong dãy aế
mid+1
…a
right
B c 3: ướ N u left <= right. Quay l i b c 2ế ạ ướ
Ng c l i: D ng. //đã xét h t t t c các ph n tượ ạ ừ ế ấ ả ầ ử
7 8 9 ~93 5 6
0 1 2 3 4 5 6 7 8
X=5
1
R
~
L N
12
12
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
12
12
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
12
12
)
)
Giải thuật tìm kiếm nhị phân
B c 1: ướ left = 0; right = N-1; //tìm trên t t c các ph n tấ ả ầ ử
B c 2: mid = (left + right)/2ướ ; //l y m c đ so sánhấ ố ể
So sánh a[mid] v i x có 3 kh n ngớ ả ă
- x=a[mid] : tìm th y. D ngấ ừ
- x<a[mid] : right = mid -1; //tìm ti p trong dãy aế
left
…a
mid-1
- x>a[mid] : left= mid +1; //tìm ti p trong dãy aế
mid+1
…a
right
B c 3: ướ N u left <= right. Quay l i b c 2ế ạ ướ
Ng c l i: D ng. //đã xét h t t t c các ph n tượ ạ ừ ế ấ ả ầ ử
7 8 9 ~93 5 6
0 1 2 3 4 5 6 7 8
X=4
1
R
~
L N
13
13
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
13
13
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
13
13
)
)
Cài đặt
int BinarySearch (int a[],int n, int x) {
int left = 0;
int right = n-1;
while(left<=right){
int mid = (left + right)/2;
if (x == a[mid]) return mid;
if (x < a[mid]) right = mid - 1;
if (x > a[mid]) left = mid + 1;
}
return -1;
}
14
14
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
14
14
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
14
14
)
)
Giải thuật tìm kiếm nhị phân
•
Ví dụ
–
Cho mảng a có 7 phần tử (n = 7) như sau:
1 3 5 6 7 8 9
–
Yêu cầu:
•
Tìm x = 3 ?
–
Kết quả:
•
X = 3 xuất hiện ở vị trí thứ 5 trong mảng
Lần lặp L R m=[(L+R)/2] a[i] = x? Kết quả
1 0 6 [(0+6)/2] = 3 a[3] = 6 ≠ x = 3 R = m-1 = 2
2 0 2 [(0+2)/2] = 1 a[1] = 3 ≠ x = 3 Kết thúc gt
15
15
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
15
15
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
15
15
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
1.2 Sắp xếp
•
Các gi i thu t s p x pả ậ ắ ế
–
S p x p đ i ch tr c ti pắ ế ổ ỗ ự ế - Interchange Sort
–
S p x p ch n tr c ti pắ ế ọ ự ế – Selection Sort
–
S p x p chèn tr c ti pắ ế ự ế – Insertion Sort
–
S p x p n i b tắ ế ổ ọ – Buble Sort
–
S p x p n i b t c i ti nắ ế ổ ọ ả ế - Shaker Sort
–
Shell sort
–
Heap sort
–
Quick sort
–
Merge sort
16
16
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
16
16
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
16
16
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Sắp xếp
•
Cho t p N ph n t có m thu c tính, đ c bi u di n d i ậ ầ ử ộ ượ ể ễ ướ
d ng b n ghi.ạ ả
•
D a vào 1 (ho c vài) thu c tính đ s p x p các ph n t theo ự ặ ộ ể ắ ế ầ ử
tr t t m iậ ự ớ
17
17
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
17
17
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
17
17
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Sắp xếp
•
G m 2 bài toán con:ồ
–
D a theo khoá s p x p ự ắ ế đ nh vị ị l i th ạ ứ
t b n ghiự ả
–
Chuy n các b n ghi v v trí m i.ể ả ề ị ớ
•
Hai thao tác c b nơ ả
–
So sánh
–
Gán
18
18
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
18
18
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
18
18
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
1.2 Sắp xếp
•
Các gi i thu t s p x pả ậ ắ ế
–
S p x p đ i ch tr c ti pắ ế ổ ỗ ự ế - Interchange Sort
–
S p x p ch n tr c ti pắ ế ọ ự ế – Selection Sort
–
S p x p chèn tr c ti pắ ế ự ế – Insertion Sort
–
S p x p n i b tắ ế ổ ọ – Buble Sort
–
S p x p n i b t c i ti nắ ế ổ ọ ả ế - Shaker Sort
–
Shell sort
–
Heap sort
–
Quick sort
–
Merge sort
19
19
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
19
19
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
19
19
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Đổi chỗ trực tiếp – Interchange Sort
•
Khái ni m ngh ch th :ệ ị ế
–
Xét m t m ng các s aộ ả ố
0
, a
1
, . a
n
.
–
N u có ế i<j và a
i
> a
j
, thì ta g i ó là m t ọ đ ộ
ngh ch th .ị ế
•
M ng ch a s p x p s có ngh ch th ả ư ắ ế ẽ ị ế
•
M ng đã có th t s không ch a ngh ch th ả ứ ự ẽ ứ ị ế
20
20
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
20
20
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
20
20
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Đổi chỗ trực tiếp – Interchange Sort
•
Tìm t t c ngh ch th , tri t tiêu chúng b ng cách hoán v 2 ph n ấ ả ị ế ệ ằ ị ầ
t t ng ng trong ngh ch th ử ươ ứ ị ế
21
21
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
21
21
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
21
21
)
)
BÀI GIẢNG ÔN THI TỐT NGHIỆP
CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
Đổi chỗ trực tiếp – Interchange Sort
•
B c 1ướ : i = 1;// b t đ u t đ u dãy ắ ầ ừ ầ
•
B c 2ướ : j = i+1;//tìm các ph n t a[j] < a[i], j>i ầ ử
•
B c 3ướ :
Trong khi j < N th c hi n ự ệ
N u a[j]<a[i] ế //xét c p a[i], a[j]ặ
Doicho(a[i],a[j]);
j = j+1;
•
B c 4ướ : i = i+1;
N u i < n: L p l i B c 2. ế ặ ạ ướ
Ng c l i: D ng. ượ ạ ừ
22
22
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
22
22
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
22
22
)
)
Đổi chỗ trực tiếp – Interchange Sort
•
Cho dãy số a:
12 2 8 5 1 6 4 15
23
23
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
23
23
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
23
23
)
)
Đổi chỗ trực tiếp – Interchange Sort
24
24
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
24
24
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
24
24
)
)
Đổi chỗ trực tiếp – Interchange Sort
25
25
CTDL2 –
Lương Trần Hy Hiến
Lương Trần Hy Hiến
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
25
25
)
)
LƯƠNG TRẦN HY HIẾN
LƯƠNG TRẦN HY HIẾN
FIT, HCMUP
FIT, HCMUP
(
(
25
25
)
)
Đổi chỗ trực tiếp – Interchange Sort