Sắp xếp nhanh

Một phần của tài liệu Chương 5: Cây ( Tree) ppt (Trang 106 - 123)

CHƯƠNG VII: SẮP XẾP

CHƯƠNG VII: SẮP XẾP

7. Sắp xếp nhanh

Đánh giá và nhận xét

 Có hướng tổng quát tốt

 Sử dụng ít tài nguyên

 Phép toán tích cực cũng là phép toán so sánh, thỏa mãn công thức truy hồi sau:

 CN = 2CN/2 +N

 Dễ dàng nhận được: CN = NlgN

 Chỉ sử dụng trung bình NlgN thao tác để sắp xếp N phần tử

Vấn đề chọn chốt.

 Quyết định tính hiệu quả

 Cần chọn điểm chốt tốt hơn

 Chọn ngẫu nhiên 03 phần tử trong dãy, sau đó chọn phần tử giữa của 03 phần tử này làm phân hoạch. Chẳng hạn số hạng trái , phải, giữa. Phương pháp này đảm bảo, trường hợp xấu nhất không thể xẩy ra.

8. Sắp xếp bằng cơ số

Ý tưởng

 Áp dụng tư tưởng phân đoạn để sắp xếp dãy khóa là số tự nhiên theo thứ tự không giảm.

Sắp xếp bằng cơ số theo kiểu hoán vị các khóa

 Ta có thể coi mỗi số nguyên là một dãy z bit đánh số từ 0 đến z-1.

 Để phân đoạn ta có thể đưa các khóa có bít cao nhất bằng 0 về đầu dãy, những khóa có bit cao nhất bàng 1 về cuối dãy (vì những khóa bắt đầu bằng 0 ở bít cao nhất sẽ nhỏ hơn những khóa có bít cao nhất bằng 1).

 Tiếp tục phân đoạn với hai đoạn dãy khóa, một đoạn có bít cao nhất bàng 1 và một đoạn có bít cao nhất bằng 0.

 Ví dụ, dãy xuất phát là 1,3,7,6,,5,2,3,4,4,5,6,7 tương ứng với dãy 03 bit:

 001 011 111 110 101 010 011 100 100 101 110 111

 Phân đoạn dựa vào bit cao nhất ( bên trái cùng)

001 011 011 010 101 110 111 100 100 101 110 111

 Pân đoạn dựa vào bít thứ 2 từ trái sang

 001 011 011 010 101 101 100 100 111 110 110 111

Tiếp tục phân đoạn dựa vào bit ở hàng đơn vị

 Có thể thực hiện với hệ cơ số khác bất kì

 Độ phức tạp thuật toán: Để phân đoạn bằng 1 bít thì cần Cn thời gian, nên thời gian phân đoạn bằng z bit se là C.N.z ( C là hằng số), vậy trường hợp xấu thì độ phức tạp thuật toán là O(N.z) còn trường hợp trung bình là O(N. min (z,lgN)

8. Sắp xếp bằng cơ số (adsbygoogle = window.adsbygoogle || []).push({});

Sắp xếp bằng cơ số

 Sử dụng một thuật toán nào đó để sắp xếp dãy khóa tăng dần theo giá trị chữ số hàng đơn vị.

 Sử dụng một thuật toán sắp xếp ổn định nào đó để sắp xếp dãy khóa tăng dần theo giá trị chữ số hàng chục.

 Tiếp tục thực hiện tương tự với chữ số hàng trăm, ngàn,…

Nhận xét và đánh giá

 Có thể coi số chữ số của mỗi khóa là bằng nhau ( bổ sung các chữ số 0 vào bên trái mỗi số hạng còn thiếu).

 Độ phức tạp phụ thuộc chủ yếu vào độ phức tạp các thuật toán sắp xếp khác đã được lựa chọn.

9. Tính ổn định của thuật toán sắp xếp

 Một phương pháp sắp xếp được gọi là ổn định nếu nó bảo toàn thứ tự bản ghi có khóa bằng nhau trong danh sách.

 Trong số các thuật toán đã xét:

 Các thuật toán sắp xếp nổi bọt, thuật toán sắp xếp chèn là những thuâth toán ổn định, các thuật toán còn lại là không ổn định.

 Nói chung mọi phương pháp sắp xếp không ổn định đều có thể biến đổi để nó trở thành ổn định. Phương pháp chung là thêm một trường khóa chỉ số là thứ tự ban đầu của đối tượng. Khi đối sánh, nếu gặp các đối tượng có cùng khóa sắp xếp như nhau thì ta dựa vào thứ tự chỉ số để xếp 02 đối tượng đó theo thứ tự ban đầu.

Một phần của tài liệu Chương 5: Cây ( Tree) ppt (Trang 106 - 123)