Đây là câu hỏi phỏng vấn.Làm cách nào để cải thiện hiệu suất của một hashtable với 1 triệu thành phần và 997 nhóm?
Giả sử có 1 triệu phần tử trong bảng và 997 nhóm danh sách không theo thứ tự. Giả sử rằng hàm băm phân phối các khóa có xác suất bằng nhau (nghĩa là, mỗi nhóm có 1000 phần tử).
Thời gian trường hợp xấu nhất để tìm một phần tử không có trong bảng là gì? Để tìm cái nào nằm trong bàn? Làm thế nào bạn có thể cải thiện điều này?
Giải pháp của tôi: Thời gian trường hợp xấu nhất khi tìm kiếm phần tử không có trong bảng và trong bảng đều là O (1000). 1000 là độ dài của danh sách chưa được phân loại.
Cải thiện: (0) đơn giản, tăng số lượng thùng> 1 triệu. (1) mỗi nhóm giữ một hashtable thứ hai, trong đó sử dụng một hàm băm khác nhau để tính toán giá trị băm cho bảng thứ hai. nó sẽ là O (1) (2) mỗi thùng chứa một cây tìm kiếm nhị phân. Nó sẽ là O (lg n).
là có thể thực hiện sự cân bằng giữa không gian và thời gian. Giữ cho cả hai người trong số họ trong một phạm vi hợp lý.
Bất kỳ ý tưởng nào tốt hơn? cảm ơn !
O (1000) là O (1). –
Tôi biết nhưng tôi muốn hiển thị thời gian xấu nhất. cảm ơn – user1002288
@ R.MartinhoFernandes: Nó không phải là cuộc biểu tình O (1000) mặc dù là nó. (Giả sử mỗi thùng là một danh sách) Nó giống như O (n/1000) => O (n). Khi bạn băm quá excissively quá tải nó không thực sự là một băm nữa nó là một tập hợp các danh sách liên kết (hoặc bất cứ cấu trúc là thực hiện các xô). –