Phân tích hi ệu quả của giải thuật sắp xếp...[r]
Trang 1Lecturer: PhD Ngo Huu Phuc
Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com
Bài 5 Phương pháp sắp xếp đơn giản
Trang 2Bài 5: Các phương pháp sắp xếp đơn giản
N ội dung:
6.1 Khái ni ệm và vai trò của sắp xếp (13)
6.2 S ắp xếp chèn (6)
6.3 S ắp xếp chọn (4)
6.4 S ắp xếp nổi bọt (4)
Tham kh ảo:
1 Lecture 16 Introduction to Sorting.htm
2 Data Structures and Algorithms Sorting.htm
Trang 35.1 Khái ni ệm và vai trò của sắp xếp
5.1.1 Các thuật toán sắp xếp
5.1.2 Vai trò của sắp xếp
5.1.3 Các vấn đề của sắp xếp
5.1.4 Một số ứng dụng của sắp xếp
5.1.5 Ý tưởng sắp xếp và phương pháp thực hiện 5.1.6 Phân tích hiệu quả của giải thuật sắp xếp
Trang 45.1.1 Các thu ật toán sắp xếp (1/2)
Th ế nào là sắp xếp?
Đưa một dãy các đối tượng về dạng thứ bậc nào đó
Gi ải thuật sắp xếp dựa trên sự so sánh nào đó.
Vi ệc sắp xếp chỉ dựa trên phép toán so sánh.
Các phép toán cơ bản của sắp xếp.
So sánh.
Tráo đổi giữa các phần tử.
Trang 55.1.1 Các thu ật toán sắp xếp (1/2)
Phương pháp sắp xếp của chương này là sắp xếp trong
Các giải thuật có thể thay thế cho nhau được
Mỗi mảng có một số phần tử
Thành phần để xem xét trong sắp xếp có thể so sánh được
N là số phần tử cần sắp xếp
Trang 65.1.2 Vai trò c ủa sắp xếp (1/2)
N ếu các đối tượng trong một mảng nào đó đã được sắp theo tr ật tự nào đó, có thể truy xuất thông tin nhanh chóng
và chính xác.
Vi ệc xây dựng giải thuật cho phép sắp xếp từng phần tử
c ủa mảng sẽ mất nhiều thời gian, độ phức tạp của giải
thu ật cỡ O(n 2 ).
≈ 50,000,000,000,000 bước cho việc sắp một mảng có 10,000,000
ph ần tử
⇒ 500,000 giây = 58 ngày, với máy tính có thể thực hiện 100 triệu phép tính toán/giây.
V ới giải thuật sắp xếp cho cả mảng, độ phức tạp của giải thu ật cỡ O(nlogn).
≈ 250 ,000,000 bước cho việc sắp một mảng có 10,000,000 phần tử
Trang 75.1.2 Vai trò c ủa sắp xếp (2/2)
Như vậy, sắp xếp là giải thuật cơ bản.
Thông thường, 25% khả năng của CPU dành
cho việc sắp xếp
Sắp xếp là bước cơ bản cho một số giải thuật
khác, ví dụ: tìm kiếm nhị phân
Có nhiều cách tiếp cận đến giải thuật sắp xếp,
từ đó, có nhiều giải thuật săp xếp khác nhau
Trang 85.1.3 Các v ấn đề của sắp xếp
S ắp xếp theo trật tự tăng hay giảm?
V ới cùng một giải thuật sắp xếp, có thể dùng cho cả sắp theo tr ật tăng hay giảm, bằng việc thay đổi phép so sánh:
<= và >=.
Các khóa c ủa giải thuật sắp xếp?
Có th ể dùng nhiều khóa cho cùng một giải thuật sắp xếp
C ần lưu ý đến ý tưởng của bài toán.
V ới các dữ liệu không phải là số thì sao?
V ới chuỗi, sử dụng phép so sánh chuỗi, từ điển, hay quy
t ắc nào đó.
Ví dụ: Sắp chuỗi Brown-Williams, Brown America, Brown,
Trang 95.1.4 M ột số ứng dụng của sắp xếp (1/2)
Với kết quả của quá trình sắp xếp, một số vấn đề
có thể được thực hiện dễ dàng
Nói chung, nếu có quá trình sắp xếp sẽ tăng tốc cho tìm kiếm trong ứng dụng cụ thể
Ví dụ, nếu có một mảng đã sắp, có thể dễ dàng tìm được phần tử lớn thứ k trong mảng, với thời gian hằng số
Trang 105.1.4 M ột số ứng dụng của sắp xếp (2/2)
M ột số ứng dụng có dùng sắp xếp.
Các từ trong từ điển đã được sắp xếp
Thông thường, các Files trong thư mục được sắp theo một trật tự nào đó
Trong thư viện, các quyển sách được sắp theo
một trật tự nào đó
Các khóa học của một trường đại học được sắp theo khoa, theo mã của khóa học
Các sự kiện được sắp theo thời gian
…