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

Ôn tốt nghiệp Cấu Trúc Dữ Liệu

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 (2.8 MB, 172 trang )

Đạ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

×