1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu - Phần 6

37 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cấu trúc dữ liệu - Phần 6
Người hướng dẫn GVGD: Trương Phúc
Trường học Trường Đại Học
Chuyên ngành Cấu trúc dữ liệu
Thể loại Bài giảng
Định dạng
Số trang 37
Dung lượng 530,92 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu tham khảo bài giảng môn Cấu trúc dữ liệu - Phần 6 Chia để trị

Trang 1

GVGD: Tr ng Ph c H i

(devide and conquer)

Trang 3

 Chia bài toán thành các bài toán con có kích th c nh h n

Có th s d ng k thu t chia đ tr đ ti p t c chia nh bài toán con

 Gi i các bài toán con r i t ng h p l i đ đ c l i gi i cho bài toán ban đ u

Trang 7

Ph ng pháp chia đ tr

ph c t p c a gi i thu t

 T(N): th i gian gi i bài toán kích th c N

 a: s bài toán con

 N/b: kích th c c a các bài toán con

 D(N): th i gian chia nh bài toán ban đ u

 C(N): th i gian k t h p các bài toán con

Ph ng trình đ quy

v i đ nh

ng c l i

Trang 9

Tìm ki m nh phân

 Cho dãy A g m N ph n t đ c s p th t không

gi m Cho bi t ph n t x có t n t i trong dãy A hay không, n u có ch ra v trí xu t hi n

 Input: A[0…N-1], x

 Output

 index = -1, n u x không t n t i trong A

 index ≥ 0 n u A[index] = x

Trang 10

Tìm ki m nh phân

Gi i thu t chia đ tr cho bài toán

 Chia: chia dãy A thành 2 n a dãy con

 Tr : d a vào tính ch t có th t c a A đ xác đ nh nên tìm

x trong n a dãy con nào

 G p: không c n vì tìm ngay trên dãy A

x

Trang 14

Bài toán tìm c c tr c a dãy

Trang 15

Bài toán tìm c c tr c a dãy

 Minh h a tìm giá tr max c a dãy b ng ph ng pháp chia đ tr

Trang 16

Bài toán tìm c c tr c a dãy

 Chia đ tr cho bài toán tìm max c a dãy

 Chia: chia dãy A[l r] thành 2 dãy con A[l m] và A[m+1 r]

Trang 17

Bài toán tìm c c tr c a dãy

Gi i thu t tìm max theo ph ng pháp chia đ tr

left = Max (A, l, m)

right = Max (A, m + 1, r)

return (left > right)?left:right

Cu i Max

Trang 18

Bài toán tìm c c tr c a dãy

return (maxL > maxR)? maxL: maxR;

}

Trang 23

Merge Sort

T t ng chia đ tr c a Merge Sort

Chia: phân ph i các đ ng ch y t dãy A sang 2 dãy con B

và C theo nguyên t c luân phiên

Tr : áp d ng t t ng trên đ ti p t c phân chia các dãy B

và C m t cách đ quy

G p: tr n t ng c p đ ng ch y trên B và C đ t o thành dãy A m i

Trang 26

Merge Sort

Gi i thu t phân ph i đ ng ch y trên A

PhanPhoi (A[], N, B[], &nB, C[], &nC)

nB = 0, nC = 0, i = 0, turn = True While (i < N) Do

If (turn = True ) Then

B[nB++] = A[i++]

C[nC++] = A[i++]

If (A[i] < A[i-1]) Then

turn = NOT (turn) //chuy n dãy

Cu i While

Cu i PhanPhoi

Trang 27

Merge Sort

 Cài đ t hàm phân ph i các đ ng ch y trên A

void Distribute( int A[], int N, int B[],

Trang 29

Merge Sort

 Cài đ t hàm tr n các đ ng ch y

void Merge( int B[], int nB, int C[], int &nC,

Trang 31

 V i x là m t giá tr tùy ý thu c dãy A

 Ti p t c phân ho ch các dãy con m t cách đ quy

Trang 33

Quick Sort

T t ng chia đ tr c a Quick Sort

 Chia: Phân ho ch A[l1 r1] thành 2 dãy con: A[l1 r2] < x

Trang 37

Quick Sort

 Cài đ t hàm phân ho ch Partition

void PhanHoach( int A[], int l1, int r1,

Ngày đăng: 09/05/2021, 18:25

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w