동일한 인덱스 및 값을 사용하여 정렬 된 정수 목록, 중복 없음을 유지할 수있는 데이터 구조 (또는 구조)를 찾고 있습니다. 범위.빠른 랜덤 액세스, 검색, 삽입 및 삭제를위한 효율적인 데이터 구조
- (A)에서 값을 삽입 주어진 값
- 의 인덱스를 찾는 지정된 인덱스
- 에서 값을 복용 :
나는 중요성을 거친 위해, 효율적으로 네 가지 주요 작업이 필요 O (1)에 I가 1 어레이를 사용하여 지정된 인덱스
에서의 값을 삭제하는 인덱스
링크 된 목록에는 O (삽입) 및 삭제 (일단 노드가 있음)가 있지만 1과 2는 O (N)이므로 이득이 무효화됩니다.
1과 2를 O (1)로 바꾸지 만 3와 4를 훨씬 더 비싼 연산으로 바꾸는 두 개의 배열 [index] = value와 b [value] = index를 유지하려고했습니다.
더 적합한 데이터 구조가 있습니까?
어떤 언어를 사용하고 있습니까? –
정말로 중요하지는 않지만, C++입니다. – Leonel
그것은 중요합니다. 모든 언어가 동일한 데이터 구조를 제공하는 것은 아닙니다. 예를 들어,이 특별한 문제는 C Judy 배열이나 C# CPTrie로 매우 효율적으로 해결할 수 있습니다. (또는 물론, Ayman이 제안한 것과 같은 일종의 균형 이진 트리입니다.) – Qwertie