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ố
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.