Câu hỏi này và câu hỏi này khiến tôi suy nghĩ một chút. Để sắp xếp một mảng có độ dài với phần tử duy nhất trong , chúng ta cần có khả năng lưu trữ số lượng giá trị trong mảng. Có một số gợi ý, nhưng tôi đang tìm cách để làm điều này trong trường hợp tuyến tính tồi tệ nhất. Cụ thể hơn:
Cho một danh sách số nguyên tố với yếu tố riêng biệt, xác định một danh sách các hàng của tất cả các yếu tố độc đáo mà c_i là đếm của nguyên tố x_i trong Một .
Dưới đây là một số ý tưởng (thất bại) tôi đã có và đã được đề xuất:
- Cây tìm kiếm nhị phân cân bằng - Với điều này, sẽ mất để chèn vào cây và tăng giá trị. Sau khi chèn chúng ta có thể thực hiện một giao dịch cây trong . Do đó, tổng thời gian đi ra quá chậm.
- Bản đồ băm - Với điều này, chúng ta có thể nhận được chèn dự kiến và do đó thời gian dự kiến . Tuy nhiên, đây vẫn không phải là trường hợp xấu nhất .
- Trống Space Mapping - Tìm thiểu và yếu tố tối đa trong . Phân bổ (nhưng không khởi tạo) đủ bộ nhớ để bao phủ phạm vi này. Sử dụng bộ nhớ này về cơ bản như một bản đồ băm và bao gồm một hàm băm ngẫu nhiên để chúng ta không cố gắng truy cập bộ nhớ bị hỏng. Chiến lược này trình bày các vấn đề. (1) Đó là xác suất với xác suất thất bại rất rất thấp, nhưng vẫn không được bảo đảm. Sử dụng bộ nhớ như thế này giới hạn chúng ta với các ràng buộc số nguyên hoặc dấu phẩy động.
- Mảng liên kết - Có nhiều mảng kết hợp khác có thể được sử dụng, tương tự như bản đồ băm và BST, nhưng tôi không tìm thấy bất kỳ mảng nào khớp với các ràng buộc này.
Có thể có một số phương pháp rõ ràng tôi đang thiếu, nhưng tôi cũng nghĩ rằng nó có thể không có khả năng. Quan điểm của bạn là gì?