Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 94 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
94
Dung lượng
3,17 MB
Nội dung
Ch ng S p x p (Sorting) Heap Sort Quick Sort William A Martin, Sorting ACM Computing Surveys, Vol 3, Nr 4, Dec 1971, pp 147-174 " The bibliography appearing at the end of this article lists 37 sorting algorithms and 100 books and papers on sorting published in the last 20 years Suggestions are made for choosing the algorithm best suited to a given situation." D Knuth: 40% th i gian ho t đ ng c a máy tính dành cho s p x p! NGUY N C NGH A B môn KHMT - HBKHN N I DUNG 5.1 Bài toán s p x p 5.2 Ba thu t toán s p x p c b n 5.3 S p x p tr n (Merge Sort) 5.4 S p x p nhanh (Quick Sort) 5.5 S p x p vun đ ng (Heap Sort) 5.6 C n d 5.7 Các ph i cho đ ph c t p tính tốn c a tốn s p x p ng pháp s p x p đ c bi t NGUY N C NGH A B môn KHMT - HBKHN 5.1 Bài toán s p x p • 5.1.1 Bài tốn s p x p • 5.1.2 Gi i thi u s l c v thu t toán s p x p NGUY N C NGH A B môn KHMT - HBKHN 5.1.1 Bài tốn s p x p • S p x p (Sorting) – Là trình t ch c l i h d li u theo th t gi m d n ho c t ng d n (ascending or descending order) • D li u c n s p x p có th – S nguyên (Integers) – Xâu ký t (Character strings) – i t ng (Objects) • Khoá s p x p (Sort key) – Là b ph n c a b n ghi xác đ nh th t s p x p c a b n ghi h b n ghi – Ta c n s p x p b n ghi theo th t c a khoá NGUY N C NGH A B môn KHMT - HBKHN 5.1.1 Bài tốn s p x p • Chú ý: • Vi c s p x p ti n hành tr c ti p b n ghi đòi h i di chuy n v trí b n ghi, có th thao tác r t t n • Vì v y, ng i ta th ng xây d ng b ng khố g m b n ghi ch có hai tr ng (khoá, tr ) – tr ng "khoá" ch a giá tr khoá, – tr ng "con tr " đ ghi đ a ch c a b n ghi t ng ng • Vi c s p x p theo khố b ng khố khơng làm thay đ i b ng chính, nh ng trình t b n ghi b ng khoá cho phép xác đ nh trình t b n ghi b ng NGUY N C NGH A B mơn KHMT - HBKHN 5.1.1 Bài tốn s p x p Ta có th h n ch xét toán s p x p d i d ng sau đây: Input: Dãy n s A = (a1, a2, …, an) Output: M t hoán v (s p x p l i) (a'1,…, a’n) c a dãy s cho tho mãn a’1 ≤ … ≤ a’n • ng d ng c a s p x p: – Qu n tr c s d li u (Database management); – Khoa h c k thu t (Science and engineering); – Các thu t toán l p l ch (Scheduling algorithms), • ví d thi t k ch ng trình d ch, truy n thông, (compiler design, telecommunication); – Máy tìm ki m web (Web search engine); – nhi u ng d ng khác… NGUY N C NGH A B mơn KHMT - HBKHN 5.1.1 Bài tốn s p x p • Các lo i thu t tốn s p x p – S p x p (internal sort) • ịi h i h d li u đ c đ a toàn b vào b nh c a máy tính – S p x p ngồi (external sort) • H d li u khơng th lúc đ a toàn b vào b nh nh ng có th đ c vào t ng b ph n t b nh ngồi trong, • Các đ c tr ng c a m t thu t toán s p x p: – T i ch (in place): n u khơng gian nh ph mà thu t tốn địi h i O(1), ngh a b ch n b i h ng s không ph thu c vào đ dài c a dãy c n s p x p – n đ nh (stable): N u ph n t có giá tr v n gi nguyên th t t ng đ i c a chúng nh tr c s p x p NGUY N C NGH A B mơn KHMT - HBKHN 5.1.1 Bài tốn s p x p • Có hai phép tốn c b n mà thu t toán s p x p th – ng ph i s d ng: i ch (Swap): Th i gian th c hi n O(1) void swap( datatype &a, datatype &b){ datatype temp = a; //datatype-ki u d a = b; b = temp; } – So sánh: Compare(a, b) tr l i true n u a tr s p x p false n u trái l i li u c a ph n t c b th t c n • Các thu t toán ch s d ng phép toán so sánh đ xác đ nh th t gi a hai ph n t đ c g i thu t toán s d ng phép so sánh (Comparison-based sorting algorithm) NGUY N C NGH A B môn KHMT - HBKHN 5.1.2 Gi i thi u s l Simple algorithms: O(n2) Fancier algorithms: O(n log n) Insertion sort Selection sort Bubble sort Shell sort c v thu t toán s p x p Comparison lower bound: (n log n) Specialized algorithms: O(n) Heap sort Merge sort Quick sort … Bucket sort Radix sort Handling huge data sets External sorting … NGUY N C NGH A B môn KHMT - HBKHN Các thu t toán s p x p d a phép so sánh Name Bubble sort Cocktail sort Average Worst Memory Stable Method — O(n²) O(1) Yes Exchanging — O(n²) O(1) Yes Exchanging Comb sort O(n log n) O(n log n) O(1) No Exchanging Gnome sort — O(n²) O(1) Yes Exchanging Selection sort O(n²) O(n²) O(1) No Selection Insertion sort O(n + d) O(n²) O(1) Yes Insertion — O(n log² n) O(1) No Insertion Binary tree sort O(n log n) O(n log n) O(n) Yes Insertion Library sort O(n log n) O(n²) O(n) Yes Insertion Merge sort O(n log n) O(n log n) O(n) Yes Merging In-place merge sort O(n log n) O(n log n) O(1) Yes Merging Heapsort O(n log n) O(n log n) O(1) No Selection — O(n log n) O(1) No Selection Quicksort O(n log n) O(n²) O(log n) No Partitioning Introsort O(n log n) O(n log n) O(log n) No Hybrid — O(n²) O(n) No Insertion Shell sort Smoothsort Patience sorting NGUY N C NGH A B môn KHMT - HBKHN 10 Các thu t tốn s p x p khơng d a phép so sánh Stable n last)) { a[j] = a[j-1]; j = j - 1; } a[j] = last; } // end for } // end of isort Gi i thích: • đ u l n l p i c a vịng "for" ngồi, d li u t a[0] đ n a[i-1] đ c s p x p • Vịng l p "while" tìm v trí cho ph n t ti p theo (last =a[i]) dãy g m i ph n t đ u tiên NGUY N C NGH A B mơn KHMT - HBKHN 19 Ví d Insertion sort (1) 10 12 23 18 15 16 17 14 10 12 23 18 15 16 17 14 10 12 18 23 15 16 17 14 10 12 18 15 23 16 17 14 10 12 15 18 23 16 17 14 10 12 15 18 16 23 17 14 10 12 15 16 18 23 17 14 NGUY N C NGH A B môn KHMT - HBKHN 20 Cây quy t đ nh • Cây quy t đ nh nh phân tho mãn: – M i nút m t phép so sánh "a < b" • c ng có th coi t ng ng v i m t khơng gian trình t – M i c nh r nhánh theo câu tr l i (true ho c false) – M i trình t s p x p – Cây quy t đ nh có lá, n u có N ph n t phân bi t c n s p x p? • N!, t c t t c trình t có th • i v i m i b d li u, ch có ch a trình t s p x p c n tìm NGUY N C NGH A B mơn KHMT - HBKHN 159 Ví d : Cây quy t đ nh v i N=3 "a < b?" a < b < c, b < c < a, c < a < b, a < c < b, b < a < c, c < b < a "a < c?" a