Professional Documents
Culture Documents
Bai 5b SXnangcao
Bai 5b SXnangcao
– T/h tốt nhất xảy ra khi bảng luôn luôn được chia đôi.
2 23 3 74 2 87 3 94
4 5 6 7 4 5 6 7
11 65 58 94 36 65 58 74
8 9 10 8 9 10
36 99 87 23 11 42
(Hình a) (Hình b)
42 15
– Quá trình tạo đống diễn ra chi tiết như sau: 1
1 42
8 9 10
36 11 65
2 99 3 94 99
1
4 5 6 7 87 94
36 87 58 74 2 3
8 9 10 4 5 6 7
23 11 65 36 65 58 74
87 94 2 87 3 74
2 3
4 5 6 7
4
36 5
65 58 6 7
74 36 65 58 42
8 9 10
8
23 9
11 99 10 23 11 99
(B1) (B2)
– Minh hoạ các bước của GT sắp xếp vun đống: 17
Dãy S được sắp xếp, số nút N sau mỗi lượt và đống được tạo mới :
Lượt 1: S=(99), N=9 Lượt 2: S=(94,99), N=8
1 94 1 87
2 87 3 74 2 65 3 74
4 5 6 7 4 5 6 7
36 65 58 42 36 11 58 42
8 9 8
23 11 23
Lượt 3: S=(87,94,99), N=7 Lượt 4: S=(74,87,94,99), N=6
1 74 1 65
2 65 3 58 2 42 3 58
4 5 6 7 4 5 6
36 11 23 42 36 11 23
Lượt 5: S=(65,74,87,94,99), N=5 Lượt 6: S = (58,65,74,87,94,99), N=4 18
1 58 1 42
2 42 3 23 2 36 3 23
4 5 4
36 11 11
36 1 23
1
11 23 2 11
2 3
1 23
19
Đánh giá độ phức tạp GT Heap_Sort
• 1 cây nhị phân hoàn chỉnh có n nút thì chiều cao của cây là [log2(n
+ 1)]. Khi tạo đống cũng như khi vun đống trong giai đoạn sắp
xếp, trường hợp xấu nhất thì số lượng phép so sánh cũng chỉ tỉ lệ
với chiều cao của cây. Suy ra:
– T/h xấu nhất:
– T/h trung bình: (việc đánh giá phức tạp hơn, ta chỉ ghi nhận 1
kết quả đã chứng minh):
• Nhận xét:
– QUICK_SORT: Phải dùng thêm không gian nhớ cho stack, để
bảo lưu thông tin về các giai đoạn sẽ được xử lý tiếp theo (vì
thực hiện đệ quy).
– HEAP_SORT thì ngoài 1 nút nhớ phụ, để thực hiện đổi chỗ, nó
không cần thêm gì nữa.
• Kết luận: Khi n lớn, HEAP_SORT tỏ ra có hiệu lực hơn hẳn 3
phương pháp sắp xếp đơn giản đã nêu.
20
5.2.3. Sắp xếp hoà nhập
• Khái niệm: Sắp xếp hoà nhập (Merge_Sort) là phương
pháp dựa trên 1 phép xử lý đơn giản hơn sắp xếp để thực
hiện sắp xếp.
• Nhược điểm: Chi phí về không gian khá lớn. Nó đòi hỏi
tới 2n phần tử nhớ, gấp đôi so với các phương pháp thông
thường. Vì vậy, người ta thường sử dụng phương pháp
này khi sắp xếp ngoài, đối với các tập tin.
• Do tính chất riêng của sắp xếp hoà nhập nên trong bài
học chỉ giới thiệu sơ lược về phương pháp này.
• Độ phức tạp của GT Merge_Sort:
21
Kết luận
• Các phương pháp sắp xếp đơn giản đã thể hiện 3 kỹ thuật cơ
sở của sắp xếp (dựa vào phép so sánh các giá trị khoá) cấp độ
lớn của thời gian thực hiện chung là O(n2), vì vậy chỉ nên sử
dụng chúng khi n nhỏ.
• Các GT cải tiến Quick_Sort, Heap_Sort đã đạt được hiệu quả
cao: O(nlog2n) thường được sử dụng khi n lớn.
– Nếu bảng cần sắp xếp vốn có khuynh hướng hầu như “đã được sắp
sẵn” thì QUICK_SORT không nên dùng.
– Nếu ban đầu bảng có khuynh hướng ít nhiều có thứ tự ngược lại với
thứ tự sắp xếp thì HEAP_SORT lại tỏ ra thuận lợi.
• Merge_Sort không kém về thời gian thực hiện nhưng về
không gian thì đòi hỏi của nó không thích hợp với sắp xếp
trong.
• Việc khẳng định 1 GT nào luôn luôn tốt hơn mọi GT khác là
điều không nên. Việc lựa chọn 1 phương pháp sắp xếp thích
hợp tuỳ thuộc vào từng yêu cầu, từng điều kiện cụ thể.
22
5.4 Câu hỏi ôn tập
• Lý thuyết
1. Trình bày bài toán sắp xếp và phát biểu bt dạng đơn giản nhất.
2. Trình bày nguyên tắc sắp xếp của 3 kiểu sắp xếp đơn giản. Độ
phức tạp của các GT tương ứng?
3. Trình bày nguyên tắc sắp xếp của 2 kiểu sắp xếp cải tiến:
Quick_Sort, Heap_Sort. Độ phức tạp của các GT tương ứng?
• Thực hành
– Cho bảng khoá cần sắp xếp:
50 8 34 6 98 17 83 25 66 42 21 59 62 71 85 76
4. Hãy minh hoạ các lượt và chi tiết lượt 1 của 3 phương pháp
sắp xếp đơn giản qua bảng khoá trên theo thứ tự tăng dần.
5. Hãy minh hoạ các lượt và chi tiết lượt 1 của 3 phương pháp
sắp xếp đơn giản qua bảng khoá trên theo thứ tự giảm dần.
23
Câu hỏi ôn tập
6. Hãy sửa lại 3 GT sắp xếp đơn giản để thực hiện sắp xếp theo
thứ tự giảm dần.
7. Hãy minh hoạ 3 phương pháp sắp xếp đơn giản qua bảng khoá
trên theo thứ tự giảm dần.
8. Hãy minh hoạ các lượt và chi tiết lượt 1 của phương pháp sắp
xếp kiểu phân đoạn (Quick_Sort) qua bảng khoá trên theo thứ
tự tăng dần và giảm dần.
9. Hãy minh hoạ các lượt và chi tiết lượt 1 của phương pháp sắp
xếp kiểu vun đống (Heap_Sort) qua bảng khoá trên theo thứ tự
tăng dần và giảm dần. Nếu thực hiện sắp xếp theo thứ tự giảm
dần thì đống được định nghĩa như thế nào?
-----------------------