Dưới đây là một số ràng buộc đối với cấu trúc dữ liệu tôi cần. Có vẻ như không có cấu trúc dữ liệu chung nào (tôi sẽ đề cập đến những cấu trúc mà tôi đã nghĩ đến dưới đây) phù hợp với tất cả những điều đó. Bất cứ ai có thể đề nghị một mà tôi có thể đã không nghĩ đến?Cấu trúc dữ liệu tốt nhất cho các ràng buộc sau đây?
- Tôi cần có khả năng thực hiện tra cứu bằng các phím số không dấu.
- Các mục cần lưu trữ là cấu trúc do người dùng xác định.
- Các chỉ số này sẽ thưa thớt, thường là rất lớn. Các mảng thường xuyên bị loại bỏ.
- Tần suất của từng chỉ mục sẽ có phân phối không đồng đều, với các chỉ số nhỏ thường xuyên hơn nhiều so với chỉ số lớn.
- N thường sẽ nhỏ, có thể không lớn hơn 5 hoặc 10, nhưng tôi không muốn dựa vào quá nhiều vì đôi khi nó có thể lớn hơn nhiều.
- Cụm từ liên tục quan trọng rất nhiều. Tôi cần tra cứu nhanh khi N nhỏ. Tôi đã thử các bảng băm chung và, theo kinh nghiệm, chúng quá chậm, ngay cả khi N = 1, có nghĩa là không có va chạm, có thể là do số lượng liên quan đến không liên quan. Tuy nhiên, tôi muốn mở các đề xuất về các bảng băm chuyên dụng tận dụng các ràng buộc khác được đề cập.
- Thời gian chèn là không phải quan trọng miễn là thời gian truy xuất nhanh. Ngay cả O (N) thời gian chèn là đủ tốt.
- Hiệu quả không gian không quan trọng lắm, mặc dù điều quan trọng là không chỉ sử dụng các mảng thông thường.
Bạn đang sử dụng ngôn ngữ nào? – kmkaplan
giống như những ràng buộc rất cụ thể, tạo ra một câu trả lời thú vị và có khả năng rất hữu ích. Cho dù ngôn ngữ bạn đang sử dụng giả định kiểm tra giới hạn * có thể * tạo sự khác biệt hay không. Nếu bạn đang trên một số hương vị nhất định của các phương thức .Net với các cấu trúc không nguyên thủy sẽ không được gạch màu một số thứ – ShuggyCoUk