và ghép lô.
– Trong thao tác phân lô, mỗi phần tử chỉ được xét đúng một lần, khi ghép cũng vậy.
– Như vậy, chi phí cho việc thực hiện thuật toán hiển nhiên là O(2mn) = O(n).
Sắp xếp theo phương pháp cơ số Radix Sort
Nhận xét:
– Sau lần phân phối thứ k các phần tử của A vào các lô B0, B1, …, B9, và lấy ngược trở ra, nếu chỉ xét đến k+1 chữ số của các phần tử trong A, ta sẽ có một mảng tăng dần nhờ trình tự lấy ra từ 0 →→→→
9. Nhận xét này bảo đảm tính đúng đắn của thuật toán. toán.
– Thuật toán có độ phức tạp tuyến tính nên hiệu quả khi sắp dãy cố rất nhiều phần tử, nhất là khi khóa sắp xếp không quá dài so với số lượng phần tử (điều này thường gặp trong thực tế).
187
187
Sắp xếp theo phương pháp cơ số Radix Sort
Nhận xét:
– Thuật toán không có trường hợp xấu nhất và tốt nhất. Mọi dãy số đều được sắp với chi phí như nhau nếu chúng có cùng số phần tử và các khóa có cùng chiều dài.
– Thuật toán cài đặt thuận tiện với các mảng với khóa sắp xếp là chuỗi (ký tự hay số) hơn là khóa số như trong ví dụ do tránh được chi phí lấy các chữ số của từng số.
188
188
Sắp xếp theo phương pháp cơ số Radix Sort
Nhận xét:
– Số lượng lô lớn (10 khi dùng số thập phân, 26 khi dùng chuỗi ký tự tiếng Anh, …) nhưng tổng kích thước của tất cả các lô chỉ bằng dãy ban đầu nên ta không thể dùng mảng để biểu diễn B. Như vậy, phải dùng cấu trúc dữ liệu động để biểu diễn B
⇒ ⇒ ⇒
⇒ Radix Sort rất thích hợp cho sắp xếp trên danh sách liên kết.
189
189
Sắp xếp theo phương pháp cơ số Radix Sort
Nhận xét:
– Người ta cũng dùng phương pháp phân lô theo biểu diễn nhị phân của khóa sắp xếp. Khi đó ta có thể dùng hoàn toàn cấu trúc dữ liệu mảng để biểu diễn B vì chỉ cần dùng hai lô B0 và B1. Tuy nhiên, khi đó chiều dài khóa sẽ lớn. Khi sắp các dãy không nhiều phần tử, thuật toán Radix sort sẽ mất ưu thế so với các thuật toán khác.