Back2dos đã nói lên tất cả, tôi sẽ chỉ cố gắng làm rõ hơn điểm mà tôi nghĩ là quan trọng nhất:
Sắp xếp Radix chỉ có thể sắp xếp các giá trị nguyên thủy thực sự có trong mảng, dựa trên các mẫu chữ số nhị phân của chúng. Trong các kịch bản kỹ thuật phần mềm trong thế giới thực, trường hợp này gặp phải hầu như không bao giờ . Những gì chúng ta có xu hướng làm thường xuyên hơn là sắp xếp các mảng cấu trúc dữ liệu phức tạp hơn (không nguyên thủy) và đôi khi chúng ta sắp xếp các mảng chỉ mục cho các thực thể khác.
Bây giờ, một mảng các chỉ mục cho các thực thể khác trên thực tế là một mảng các nguyên hàm, nhưng thứ tự sắp xếp được cung cấp bởi giao diện so sánh (và / hoặc ủy nhiệm trong C #) không so sánh các chỉ mục, nhưng các thực thể được lập chỉ mục bởi các chỉ mục. Do đó, thứ tự sắp xếp hoàn toàn không có mối quan hệ nào với thứ tự các giá trị của nguyên thủy, và do đó sắp xếp cơ số là hoàn toàn vô dụng đối với kịch bản này.
Một ví dụ:
Chúng tôi có một chuỗi các chuỗi: [0] = "Mike", [1] = "Albert", [2] = "Zoro". Sau đó, chúng tôi khai báo một mảng các chỉ mục cho các chuỗi đó: [0] = 0, [1] = 1, [2] = 2. Sau đó, chúng tôi sắp xếp mảng các chỉ mục, chuyển cho nó một bộ so sánh không so sánh chính các chỉ mục, mà là các chuỗi thực tế được gọi bởi các chỉ mục này. Sau khi sắp xếp, mảng kết quả của các chỉ mục sẽ trông như thế này: [0] = 1, [1] = 0, [2] = 2. Như bạn có thể thấy, thứ tự sắp xếp này không liên quan gì đến các mẫu nhị phân của các giá trị có trong mảng và bằng cách duyệt qua mảng chỉ mục này và tìm nạp từng chuỗi tương ứng, chúng ta truy cập các chuỗi theo thứ tự được sắp xếp.