3 개의 식별자 필드와 하나의 값 필드가있는 구조가 있습니다. 나는이 물건들의 목록을 가지고있다. 비유하자면 식별자 필드는 객체에 대한 기본 키와 같습니다. 이 3 개의 필드는 객체를 고유하게 식별합니다.최소 조회 시간 복잡성이있는 좋은 방법 제안
Class
{
int a1;
int a2;
int a3;
int value;
};
나는이 데이터 형식의 1000 개체 목록을 가지고 있습니다. a1, a2 및 a3의 특정 값을 가진 개체가 있는지 확인하고 해당 값을 반환하는지 확인하는 조회 함수에 a1, a2 및 a3 값을 전달하여 이러한 ID 키 값의 특정 값을 확인해야합니다. 최상의 검색 시간을 얻기 위해 이것을 구현하는 가장 효과적인 방법은 무엇입니까?
내가 생각할 수있는 한 가지 해결책은 길이가 1000 인 3 차원 행렬을 사용하여 그 값을 채우는 것입니다. 조회 시간은 O (1)입니다. 그러나 단점이 있습니다. 1. 배열의 길이를 알아야합니다. 2. 높은 신원 필드 (예 : 20)의 경우, 메모리에 과도한 잔량이 될 20 개의 차원 행렬이 필요합니다. 실제로 구현하려면 23 개의 ID 필드가 있어야합니다.
이 데이터를 저장하는 좋은 방법을 제안하면 시간이 가장 많이 걸릴 것입니까?
a1, a2 및 a3의 범위 값은 무엇입니까? – MPelletier
n = 1000이 실제로 목록의 크기라면 선형 검색은 시간이 많이 걸릴 것입니다. n이 1k보다 상당히 큰 경우 키를 연결하고 값을 (해시 (키), 값) 맵에 저장합니다. – msw
제 실제 구현에는 a1, a2 ... a23이 있습니다. 그리고 n은 10-20K 일 수 있습니다. – infinity