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

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

37 179 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

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

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: 08/08/2014, 04:21

TỪ KHÓA LIÊN QUAN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN