Phân tích và Thiết kế THUẬT TOÁN Hà Đại Dương Web: fit.mta.edu.vn/~duonghd

Similar documents
CÂY CÂN BẰNG AVL MỤC TIÊU TÓM TẮT. Hoàn tất bài thực hành này, sinh viên có thể:

PHƯƠNG PHÁP HỌC VÀ THỰC HÀNH MÔN GÚT Phải chuẩn bị đầy đủ dụng cụ: Dây, vật dụng, cây, móc. Trí nhớ, nhanh, đúng chỗ Kiên nhẫn, bình tĩnh, hoạt bát

PREMIER VILLAGE PHU QUOC RESORT & PREMIER RESIDENCES PHU QUOC EMERALD BAY MANAGED BY ACCORHOTELS

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG CÂN BÀN CÂN SÀN TPS SERI-DH

Sự hòa hợp giữa các thì

Chuyên đề SWAT (Soil and Water Assessment Tool)

AMC 8 (A) 2 (B) 3 (C) 4 (D) 5 (E) 6

VIÊM TAI GIỮA MẠN THỦNG NHĨ KÉO DÀI ẢNH HƢỞNG ĐẾN SỰ PHÁT TRIỂN THÔNG BÀO XƢƠNG CHŨM

With these exceptional golfing privileges, there is no better golfing partner than your Visa Premium card

hồ sơ năng lực GIỚI THIỆU CÔNG TY Company Introduction Billboard Ads sign Street Banner Events Contacts giới thiệu vinamad

Phần 2. AUTOLISP. BS: Nguyễn Quang Trung 1

HÌNH THÁI HỌC CÂY PHẾ QUẢN Ở NGƯỜI VIỆT NAM

ỨNG DỤNG NỘI SOI PHẾ QUẢN CAN THIỆP TẠI TRUNG TÂM HÔ HẤP BỆNH VIỆN BẠCH MAI. TS. Vũ Văn Giáp TS. Chu Thị Hạnh GS.TS. Ngô Quý Châu và CS

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG CÂN ĐIỆN TỬ

(BangBH, NghiaND) soict.hut.edu.vn

"Shepherds living with the smell of the sheep" (Pope Francis) DANH SÁCH THAM DỰ VIÊN

MARKET-ing 8/12/2011. Bài giảng lưu hành nội bộ dành riêng cho SV KTS _ DH Nong Lam TPHCM. Marketing là gì? TS Nguyen Minh Duc 1

MỘT SỐ ĐẶC ĐIỂM HUYẾT HỌC CỦA GÀ ISA BROWN MẮC BỆNH NEWCASTLE

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG CÂN ĐẾM VIBRA TPS SERI C VIBRA TPS C

MÔ HÌNH QUẢN TRỊ DOANH NGHIỆP THEO XU HƯỚNG ĐỔI MỚI

DI TRUYỀN & CHỌN GiỐNG THỦY SẢN. Ts. Phạm Thanh Liêm Ts. Dương Thúy Yên Bộ môn Kỹ thuật Nuôi Nƣớc Ngọt

THỜI GIAN TIÊU ĐỀ BÀI PHÁT BIỂU DIỄN GIẢ TIÊU ĐỀ BÀI PHÁT BIỂU DIỄN GIẢ PHÒNG HỘI THẢO 2 PHẦN TỔNG QUÁT

THÀNH PHẦN LOÀI VÀ MỨC ĐỘ PHONG PHÚ CỦA CÁC LOÀI CÁ BỐNG THUỘC HỌ (ELEOTRIDAE) TRÊN SÔNG HẬU STUDY ON FISH COMPOSITION AND ABUNDANCE OF GOBY FISH

ẢNH HƯỞNG TỈ LỆ CÁC HUFA (DHA:EPA:ARA) TRONG THỨC ĂN LÀM GIÀU ĐẾN SINH TRƯỞNG VÀ TỈ LỆ SỐNG CỦA ẤU TRÙNG CÁ CHẼM - Lates calcarifer (Bloch, 1790)

NGHI N CøU ÆC IÓM GI I PHÉU L M SµNG Vµ KÕT QU IÒU TRÞ PHÉU THUËT SöA TOµN Bé BÖNH TIM THÊT PH I HAI êng RA

ỨNG DỤNG MẠNG XÃ HỘI ẢO TRONG QUẢNG BÁ DU LỊCH

THÔNG BÁO SỐ 2 HỘI NGHỊ KHOA HỌC CÔNG NGHỆ TOÀN QUỐC VỀ CƠ KHÍ LẦN THỨ IV NGÀY 9 & 10 THÁNG 10 NĂM 2015

9:00-11:00 GIỜ : HỘI NGHỊ PHIÊN TOÀN THỂ

SỰ BIẾN ĐỔI CỦA LƯỢNG COLIFORMS VÀ Escherichia coli GÂY NHIỄM TRÊN CÁ RÔ PHI KHI BẢO QUẢN Ở NHIỆT ĐỘ DƯƠNG THẤP

TẠP CHÍ KHOA HỌC, Đại học Huế, Số 55, 2009

BÀI 1: SOẠN THẢO VĂN BẢN VỚI MICROSOFT WORD

VIỆN TIÊU CHUẨN ANH - LỊCH ĐÀO TẠO / TRAINING SCHEDULE 2018 Đào tạo tại Đà Nẵng/ in Đà Nẵng

BRONCHOGENIC CYST IN THE ANTERIOR MEDIASTINUM A CASE REPORT

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÕNG -----o0o----- ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN

Một số thao tác cơ bản trong Word 2007, 2010 Cập nhật ngày 14/12/2015 Đặt mục tiêu > Quan sát > Chọn đối tượng > Chọn việc > Hành động!

CHẨN ĐOÁN VÀ ĐIỀU TRỊ TEO THỰC QUẢN

PHẪU THUẬT NỘI SOI Ổ BỤNG TRONG THAI KỲ

R E C R E A T I O N B R O C H U R E

KẾT QUẢ CHỌN TẠO GIỐNG LÚA BẮC THƠM SỐ 7 KHÁNG BỆNH BẠC LÁ

BITEXCO FINANCIAL TOWER. International Summer Week. 1 st July May, 2016

SỰ PHÂN BỐ VÀ CƯỜNG LỰC KHAI THÁC CÁ KÈO GIỐNG (Pseudapocryptes elongatus, Cuvier 1816) Ở VÙNG VEN BIỂN TỈNH SÓC TRĂNG VÀ BẠC LIÊU

Công ty Cổ phần BLUESOFTS. Add-in A-Tools Trích lọc dữ liệu và tạo báo cáo động trong Microsoft Excel. Tác giả: ThS.

Sxmb du doan. 10/17/2017 Daphne irene video 10/19/2017. Men that play with a catheter

data science = data (math stat cs...)?

CBRE Seminar ASSET SERVICES OFFICE SERVICES. Standing out in a challenging and crowded market. 12 th February 2009

BÁO CÁO THƯỜNG NIÊN NĂM 2016

Trung Tâm Gia Sư Tài Năng Việt

Third Amnesty Of God Eighty Ninth Year Tay Ninh Holy See **** REPORT

HỌ CÁ BỐNG TRẮNG (GOBIIDAE) TRONG CÁC RẠN SAN HÔ SPECIES COMPOSITION AND DISTRIBUTION OF THE FAMILY GOBIIDAE IN CORAL REEFS IN THE NHA TRANG BAY

Khối: Cao Đẳng Năm 2008

Phrasal verbs Nhữ ng cu m đo ng tữ hay ga p trong ca c ba i thi

FIEST ELEMENTARY OCTOBER 1-12, Fiest Elementary School Est. 1989

The Abyss. Whitepaper. Tháng 4 năm 2018 Phiên bản 2.0

NH»NG ÇIŠU CÀN BI T VŠ BŒNH LAO

MÔ TẢ BA LOÀI MỚI TRONG NHÓM CÁ BẬU, GIỐNG Garra Hamilton, 1822 (Cyprinidae, Cypriniformes) ĐƯỢC PHÁT HIỆN Ở BẮC VIỆT NAM

UNIT 12: WATER SPORTS

Tìm hiểu CMS Joomla và ứng dụng xây dựng website bán máy tính qua mạng

Nguyễn Phi Hùng - Lớp CT901 1

Cho đến nay, có 180 tham dự viên và thuyết trình viên Đại Hội Linh Mục Việt Nam Emmaus V; đông nhất từ trước đến giờ. Chúng ta cảm tạ Chúa!

ĐẶC ĐIỂM PHÂN BỐ CỦA ỐC CỐI (CONUS SPP) TẠI VỊNH VÂN PHONG KHÁNH HÒA

THƯ VIỆN TRUNG TÂM - THÔNG BÁO TÀI LIỆU MỚI THÁNG 3/2016

3M Personal Protective Equipments. ThePower toprotect. Your World

TÀI LIỆU HƢỚNG DẪN CHƢƠNG TRÌNH VISA VIETNAM 2012 PLATINUM GOLF

KỸ THUẬT SẢN XUẤT GIỐNG VÀ NUÔI CÁ BIỂN (TS652)

CÁ TRÊ PHÚ QUỐC (Clarias gracilentus), MỘT LOÀI CÁ MỚI CỦA VIỆT NAM

THÔNG BÁO KỸ THUẬT TÀU BIỂN TECHNICAL INFORMATION ON SEA-GOING SHIPS

Your World. ThePower toprotect. 3M Personal Protective Equipments

Nhà phân ph i, cung c p s n ph m DIGI - JAPAN t i Vi t Nam. Gi i pháp an toàn và toàn di n v cân i n t CAÂN ÑIEÄN TÖÛ HÖNG THÒNH.

BÁO CÁO KHAI MẠC (Phiên 1)

Initial Environmental and Social Examination Report Annex D

THÔNG BÁO - GIÚP NẠN NHÂN BÃO LỤT MIỀN TRUNG 2016

Tạp chí Khoa học Kỹ thuật NÔNG LÂM NGHIỆP

Thôngtin dànhchocánbộy tế. & PHÁC ĐỒ PHỐI HỢP VỚI α BLOCKER TRONG ĐIỀU TRỊ TSLTTTL

CHỈ SỐ THƢƠNG MẠI ĐIỆN TỬ VIỆT NAM

Giáo Xứ Thánh Philipphê PHAN VĂN MINH 15 West Par Street, Orlando, Florida ĐT: (407) ĐT. khẩn cấp: (407)

Vietnam, Que Huong Muon Thuo =: Vietnam, Mon Pays De Toujours = Vietnam, My Country Forever By Cao Linh Tran READ ONLINE

Mot so cac trung bi6n Ong muc. nu& bien yen b6 V* Nam

Chúa Nh t XXII Th ng Niên N m C. Ngày 01/09/2013 Bản Tin Số Nhân Đ c Đ u Tiên. Lm. G.T. Phạm Quốc Hưng, C.Ss.R

2979 Vietnamese songs Karaoke Page 1

Kính gửi: Thư viện Trường BÁO GIÁ DANH MỤC SÁCH GIÁO TRÌNH

COMPANY PROFILE CÔNG TY TNHH SX TM & XD VIỆT HÀN VIET HAN PRODUCTION TRADING & CONSTRUCTION CO., LTD

ĐỌC KINH TÔN VƯƠNG LỊCH PHỤNG VỤ TRONG TUẦN. Ngày 13/5/2018 Lúc 7:00PM Giáo Khu 1 Ô/B Hoàng Vang Herald Dr.

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ QUÁCH VĂN CAO THI

INTEGRAL VOVINAM BELT EXAMINATION Programme

Danh Sách Linh Mục Việt Nam Tham Dự Đại Hội Emmaus V (Hạn chót ghi danh ngày 30/9/ Please thêm $80 nếu ghi danh sau ngày 30/9/2013)

Nghiên cứu thành phần loài cá họ Bống trắng (Gobiidae) phân bố ở ven biển tỉnh Sóc Trăng

GIẢI THUẬT tsvm CHO PHÂN LỚP PHI TUYẾN TẬP DỮ LIỆU LỚN

THÀNH PHẦN VI NẤM KÍ SINH TRÊN CÁ TRA GIỐNG (Pangasianodon hypophthalmus)

JEN Ngay~..A.Q.l ~1: e vi~c tuyen sinh dao tao trinh dq thac si narn 2017 C~uyen ~J~.c._M..fil,

ALEGOLF MEMBERS PREFERRED RATES TABLE

HỘI NGHỊ VẬT LÝ LÝ THUYẾT TOÀN QUỐC LẦN THỨ 31

TẠP CHÍ KHOA HỌC, Đại học Huế, tập 73, số 4, năm 2012 DẪN LIỆU BƯỚC ĐẦU VỀ THÀNH PHẦN LOÀI CÁ Ở VÙNG RỪNG CAO MUÔN, HUYỆN BA TƠ, TỈNH QUẢNG NGÃI

DANH MỤC SÁCH MỚI THÁNG 12 NĂM 2014

HỌ NGỌC LAN (Magnoliaceae): HỆ THỐNG VÀ PHÂN LOẠI HỌC

A Novel Application of Fuzzy Set Theory and Topic Model in Sentence Extraction for Vietnamese Text

CHUONGTIDNHTRATHUONG

HIỆN TRẠNG GIÁO TRÌNH - BÀI GIẢNG

Tdm seat ton Hwang gan do thuoc thong qua ket qua xet nghiem can lam sang tqi Benh vien Huu Nghi Tran Thj Ngoc\Tran Ngan Ha 1, Nguyen Khac Dung 1, Tra

GIÁO XỨ CÁC THÁNH TỬ ĐẠO VIỆT NAM

Chánh Xứ: Lm. Phaolô Nguyễn Tất Hải, C.Ss.R. Phoù Xöù: Lm. Đaminh Phạm Ngọc Hảo, C.Ss.R. Phoùù Teá: Vincent Đàm Hữu Thư

Transcription:

Phân tích và Thiết kế THUẬT TOÁN Hà Đại Dương duonghd@mta.edu.vn Web: fit.mta.edu.vn/~duonghd Bài 4 - Thiết kế thuật toán Chia để trị - Divide&Conquer PHÂN TÍCH VÀ THIẾT KẾ THUẬ TOÁN NỘI DUNG I. Giới thiệu II. Lược đồ chung IV. Bài tập 1

I. Giới thiệu Là một phương pháp được áp dụng rộng rãi Ý tưởng chung là phân rã bài toán thành bài toán nhỏ hơn độc lập với nhau. Giải các bài toán con theo cùng 1 cách thức Tổng hợp lời các bài toán con để có được kết quả bài toán ban đầu. Tư tưởng chung của cách tiếp cận Chia để trị II. Lược đồ chung Chia: Bằng cách nào đó chia tập hợp các đối tượng của bài toán thành bài toán con độc lập Tiếp tục chia các bài toán con cho đến khi có thể giải trực tiếp (không cần, hoặc không thể chia nhỏ nữa) Trị: Trên các bài toán con thực hiện cùng một cách thức: Chia nhỏ nếu cần hoặc giải trực tiếp Tổng hợp: Khi mỗi bài toán con được giải, tổng hợp để có kết quả bài toán ban đầu. II. Lược đồ chung

1. Tìm kiếm nhị phân The Manhattan phone book has 1,000,000+ entries. How is it possible to locate a name by examining just a tiny, tiny fraction of those entries? 1. Tìm kiếm nhị phân Key idea of phone book search : repeated halving To find the page containing Pat Reed s number while (Phone book is longer than 1 page) Open to the middle page. if Reed comes before the first entry, Rip and throw away the nd half. else Rip and throw away the 1 st half. end end 1. Tìm kiếm nhị phân What happens to the phone book length? Original: 3000 pages After 1 rip: 100 pages After rips: 70 pages After 3 rips: 37 pages After 4 rips: 188 pages After rips: 94 pages : After 1 rips: 1 page 3

1. Tìm kiếm nhị phân Repeatedly halving the size of the search space is the main idea behind the method of binary search. An item in a sorted array of length n can be located with just log n comparisons. n log(n) Savings is significant! 100 7 1000 10 10000 13 1 3 4 6 7 8 9 10 11 1 Binary search: target x = 70 v 1 1 33 3 4 4 1 6 73 7 86 98 L: Mid: R: 1 6 1 v(mid) <= x So throw away the left half Insight Through Computing 1 3 4 6 7 8 9 10 11 1 Binary search: target x = 70 v 1 1 33 3 4 4 1 6 73 7 86 98 L: Mid: R: 6 9 1 x < v(mid) So throw away the right half Insight Through Computing 4

1 3 4 6 7 8 9 10 11 1 Binary search: target x = 70 v 1 1 33 3 4 4 1 6 73 7 86 98 L: Mid: R: 6 7 9 v(mid) <= x So throw away the left half Insight Through Computing 1 3 4 6 7 8 9 10 11 1 Binary search: target x = 70 v 1 1 33 3 4 4 1 6 73 7 86 98 L: Mid: R: 7 8 9 v(mid) <= x So throw away the left half Insight Through Computing 1 3 4 6 7 8 9 10 11 1 Binary search: target x = 70 v 1 1 33 3 4 4 1 6 73 7 86 98 L: Mid: 8 8 Done because R-L = 1 R: 9 Insight Through Computing

1. Tìm kiếm nhị phân Mô tả thuật toán: Vào A[1..n] Ra: Chỉ số k = -1 nếu không tìm thấy 1<=k<=n nếu tìm thấy Độ phức tạp thuật toán: O(log n) 1. Tìm kiếm nhị phân Cài đặt:. Tìm giá trị MIN, MAX Phát biểu bài toán: Cho mảng A có n phần tử. Tìm giá trị lớn nhất (MAX) và giá trị nhỏ nhất (MIN) trên mảng A. Tìm kiếm nhị phân : Chia đôi mảng A, tìm kiếm MIN, MAX trên mỗi nữa sau đó tổng hợp kết quả trên hai nửa đó để tìm MIN, MAX của cả mảng A. Nếu đoạn chia chỉ có một phần tử thì MIN=MAX=phần tử đó. 6

. Tìm giá trị MIN, MAX Mô tả thuật toán: Vào: A[l..r] Ra: MIN=Min(A[1],,A[r]) MAX=Max(A[1],,A[r]). Tìm giá trị MIN, MAX Độ phức tạp thuật toán:. Tìm giá trị MIN, MAX Cài đặt: 7

3. Thuật toán Sort Phát biểu bài toán: Cho mảng gồm n phần tử A[1..n], sắp xếp mảng A theo thứ tự tăng dần Ý tưởng: Nếu có hai dãy a và b đã được sắp xếp, tiến hành trộn hai dãy này thành dãy c đã được sắp xếp. Nếu chia nhỏ mảng cần sắp xếp thành các đoạn 1 phần tử thì nó là đoạn được sắp xếp Tiến hành ghép các đoạn nhỏ thành các đoạn lớn đã được sắp xếp 3. Thuật toán Sort If I have two helpers, I d Give each helper half the array to sort Then I get back the sorted subarrays and merge them. What if those two helpers each had two sub-helpers? And the sub-helpers each had two sub-sub-helpers? And 3. Thuật toán Sort H E M G B K A Q F L P D R C J N H E M G B K A Q F L P D R C J N 8

3. Thuật toán Sort H E M G B K A Q F L P D R C J N H E M G B K A Q F L P D R C J N 3. Thuật toán Sort H E M G B K A Q F L P D R C J N H E M G B K A Q F L P D R C J N 3. Thuật toán Sort H E M G B K A Q F L P D R C J N 9

3. Thuật toán Sort E H G M B K A Q F L D P C R J N H E M G B K A Q F L P D R C J N Insight Through Computing 3. Thuật toán Sort E G H M A B K Q D F L P C J N R E H G M B K A Q F L D P C R J N 3. Thuật toán Sort A B E G H K M Q C D F J L N P R E G H M A B K Q D F L P C J N R 10

3. Thuật toán Sort A B C D E F G H J K L M N P Q R A B E G H K M Q C D F J L N P R 3. Thuật toán Sort H E M G B K A Q F L P D R C J N A B C D E F G H J K L M N P Q R 3. Thuật toán Sort Ý tưởng thao tác trộn: Duyệt trên dãy a tại vị trí i Duyệt trên dãy b tại vị trí j Nếu a[i]>b[j] thì thêm b[j] và trong dãy c tăng biến j ngược lại thêm a[i] vào dãy và tăng biến i Nếu một trong hai dãy hết trước tiến hành đưa toàn bộ dãy còn lại vào trong dãy c Áp dụng trong trường hợp a, b là hai đoạn của mảng a[l..t], a[t+1..r] c[l..r] Để thuận tiện trong xử lý tiến hành chuyển mảng đã sắp xếp về mảng a 11

3. Thuật toán Sort Input: a[l..t], a[t+1..r] đã được sắp xếp Ouput: a[l..r] được sắp xếp không giảm 1. i=l. j=t+1 3. p=l; 4. while (i<=t && j<=r) a. if(a[i]<a[j]) c[p]=a[i] i++ b. Else c[p]=a[j]; j++ c. p++. while (i<=t) c[p]=a[i] i++ p++ 6. while (j<=r) c[p]=a[j] j++ p++ 7. for (i=l; i<=r ;i++) a[i]=c[i]; 3. Thuật toán Sort 1 1 33 3 4 4 6 7 i 1 1 i 1 ix<=4 and iy<=: x(ix) <= y(iy)??? 1

i 1 1 1 i 1 ix<=4 and iy<=: x(ix) <= y(iy) YES i 1 1 i ix<=4 and iy<=: x(ix) <= y(iy)??? i 1 1 1 i ix<=4 and iy<=: x(ix) <= y(iy) NO 13

i 1 1 i 3 ix<=4 and iy<=: x(ix) <= y(iy)??? i 1 1 33 i 3 ix<=4 and iy<=: x(ix) <= y(iy) YES i 3 1 1 33 i 4 ix<=4 and iy<=: x(ix) <= y(iy)??? 14

i 3 1 1 33 3 i 4 ix<=4 and iy<=: x(ix) <= y(iy) YES i 4 1 1 33 3 i ix<=4 and iy<=: x(ix) <= y(iy)??? i 4 1 1 33 3 4 i ix<=4 and iy<=: x(ix) <= y(iy) NO 1

i 4 3 1 1 33 3 4 i ix<=4 and iy<=: x(ix) <= y(iy)??? i 4 3 1 1 33 3 4 4 i ix<=4 and iy<=: x(ix) <= y(iy) YES i 3 1 1 33 3 4 4 i 6 ix > 4 16

i 3 1 1 33 3 4 4 i 6 ix > 4: take y(iy) i 4 1 1 33 3 4 4 i 8 iy <= i 4 1 1 33 3 4 4 6 i 8 iy <= 17

i 1 1 33 3 4 4 6 i 9 iy <= i 1 1 33 3 4 4 6 7 i 9 iy <= 3. Thuật toán Sort Thuật toán sắp xếp trộn mergesort Input: a[l..r] Ouput: a[l..r] đã được sắp xếp 1. if(l>=r) return ;. t=(l+r)/ 3. mergesort(l,t); 4. mergesort(t+1,r);. merge(a[l..t],a[t+1..r); 18

3. Thuật toán Sort Thuật toán sắp xếp trộn mergesort Input: a[l..r] Ouput: a[l..r] đã được sắp xếp 1. if(l>=r) return ;. t=(l+r)/ 3. mergesort(l,t); 4. mergesort(t+1,r);. merge(a[l..t],a[t+1..r); 0 1 3 4 6 3 1 7 8 6 9 3 1 7 8 6 9 3 1 7 8 6 9 1 3 7 8 6 9 1 3 7 8 6 9 1 3 6 7 8 9 3. Thuật toán Sort Đánh giá độ phức tạp Số phép so sánh: n*log(n) Số phép gáp: *n*log(n) Số phép gán chỉ số: *n Độ phức tạp phép toán: O(nlog(n)) 3. Thuật toán Sort Ví dụ 7 10 1 0 13 1 7 10 1 0 13 1 7 10 1 0 13 1 7 10 1 0 13 1 10 7 1 0 13 1 10 1 0 7 13 1 10 1 13 1 0 7 19

4. Thuật toán QuickSort Phát biểu bài toán: Cho mảng gồm n phần tử A[1..n], sắp xếp mảng A theo thứ tự tăng dần. Ý tưởng: Cho một dãy, chọn một phần tử ở giữa, chia đoạn thành phần Chuyển các phần tử nhỏ, hoặc bằng đến trước, các phần tử lớn hơn về sau Sẽ được nửa đầu bé hơn nửa sau Lặp lại việc chuyển đổi cho các phần tử nửa đầu, và nửa sau đến lúc số phần tử là 1 4. Thuật toán QuickSort Phát biểu bài toán: Cho mảng gồm n phần tử A[1..n], sắp xếp mảng A theo thứ tự tăng dần. Ý tưởng: Thuật toán ban đầu là chia: cố gắng chia thành hai đoạn khác nhau Trị: thực hiện các thuật toán sắp xếp trên các đoạn con Thực hiện kết hợp: thuật toán tự kết hợp kết quả 4. Thuật toán QuickSort Phân đoạn (chia): Chọn một phần tử chốt x (đầu tiên) Duyệt từ vị trí tiếp theo sang phải tìm vị trí phần tử đầu tiên >= x, i Duyệt từ phải sang trái, tìm vị trí phần tử đầu tiên <x, j Nếu i<j thì hoán đổi vị trí Tiếp tục đến lúc j<i 0

4. Thuật toán QuickSort Thuật toán: partition Input: A[l..r], l,r: đoạn cần phân chia Ouput: A[l..r], i chỉ số phân chia 1. X=a[l]. i=l+1; 3. j=r; 4. While (i<j) a. While (i<j && a[i]<x) i++ b. While (j>=i && a[j]>=x) j - - c. If(i<j) swap(a[i],a[j]). Swap(a[l],a[j]) 6. Return j; 4. Thuật toán QuickSort Thuật toán: partition Input: A[l..r], l,r: đoạn cần phân chia Ouput: A[l..r], i chỉ số phân chia 1. X=a[l]. i=l+1; 3. j=r; i j 0 1 3 4 6 4. While (i<j) a. While (i<j && a[i]<x) i++ 4 3 1 7 8 6 9 b. c. While (j>=i && a[j]>=x) j If(i<j) swap(a[i],a[j]) 3 3 1 8 7 6 9. Swap(a[l],a[j]) 6. Return j; KQ 1 3 8 7 6 9 4. Thuật toán QuickSort Thuật toán: quicksort Input: A[l..r]: đoạn cần sắp xếp Ouput: A[l..r] đã sắp xếp 1. If(l>=r) return;. i=partition(a,l,r) 3. quicksort(a,l,i-1) 4. quicksort(a,i+1,r) 1

4. Thuật toán QuickSort Thuật toán: quicksort Input: A[l..r]: đoạn cần sắp xếp Ouput: A[l..r] đã sắp xếp 1. If(l>=r) return;. i=partition(a,l,r) 3. quicksort(a,l,i-1) 4. quicksort(a,i+1,r) A 0 1 3 4 6 3 1 7 8 6 9 3 1 8 7 6 9 Part 1 3 8 7 6 9 Part Part 1 8 7 6 9 1 6 7 8 9 1 6 7 9 6 7 7 1 3 6 7 8 9 4. Thuật toán QuickSort Đánh giá độ phức tạp Số phép toán gán giá trị: 3 * n/ * h Số phép toán so sánh: n*h Số phép toán gán chỉ số: n*h Trường hợp xấu nhất: h=n Trường hợp trung bình: h = log(n) Độ phức tạp trường hợp xấu nhất: O(n ) Độ phức tạp trường hợp trung bình: O(nlog(n)) IV. Bài tập Cho mảng A={3,, 8, 9, 4,, 7,, 3,9,8} 1. Thực hiện từng bước thuật toán MIN, MAX với mảng A.. Thực hiện thuật toán QuickSort và thể hiện kết quả từng bước với mảng A. 3. Thực hiện từng bước thuật toán tìm kiếm nhị phân các giá trị x=, 6, 7 với mảng đã sắp xếp ở bài. 4. Thực hiện thuật toán Sort và thể hiện kết quả từng bước với mảng A.. Cài đặtthuật toán tìm kiếm nhị phân, đánh giá bằng thực nghiệm và so sánh với lý thuyết. 6. Cài đặtthuật toán MIN-MAX, đánh giá bằng thực nghiệm và so sánh với lý thuyết. 7. Cài đặtchương trình QuickSort, đánh giá bằng thực nghiệm và so sánh với lý thuyết. 8. Cài đặtchương trình Sort, đánh giá bằng thực nghiệm và so sánh với lý thuyết. 9. Thử nghiệm QuickSort và Sort trên cùng các bộ dữ liệu, so sánh thời gian thực hiện các thuật toán đó.

NỘI DUNG BÀI HỌC I. Giới thiệu II. Lược đồ chung IV. Bài tập 3