실제로, 그것은 O (1)이지만, 이것은 실제로 끔찍하고 수학적으로 말도 안되는 단순화입니다. O () 표기법은 문제의 크기가 무한대 인 경향이있을 때 알고리즘의 작동 방식을 나타냅니다. 해시 맵 get / put은 제한된 크기의 O (1) 알고리즘처럼 작동합니다. 한계는 컴퓨터 메모리와 어드레싱 관점에서 상당히 크지 만 무한대는 아닙니다.
해시 맵 get / put이 O (1)라고 말하면 실제로 get / put에 필요한 시간은 다소 일정하며 해시 맵이 될 수있는 한 해시 맵의 요소 수에 의존하지 않는다고 말해야합니다. 실제 컴퓨팅 시스템에 표시됩니다. 문제가 그 크기를 넘어서고 더 큰 해시 맵이 필요하다면, 잠시 후, 한 가지 요소를 설명하는 비트의 수는 설명 가능한 다른 요소가 없어 질수록 증가 할 것입니다. 예를 들어, 해시 맵을 사용하여 32 비트 숫자를 저장 한 후 해시 맵에 2 ^ 32 비트 이상의 요소를 갖도록 문제 크기를 늘리면 개별 요소는 32 비트 이상으로 설명됩니다.
개별 요소를 설명하는 데 필요한 비트 수는 log (N)입니다. 여기서 N은 최대 요소 수이므로 get 및 put은 실제로 O (log N)입니다.
트리 세트 (O (log n))와 비교하면 해시 세트는 O (long (max (n))이며 특정 구현에서는 max (n)이기 때문에 O (1)이라고 생각합니다. 고정되어 있고 변경되지 않으며 (비트 단위로 저장된 객체의 크기) 해시 코드를 계산하는 알고리즘이 빠릅니다.
마지막으로, 어떤 데이터 구조에서 요소를 찾는 것이 O (1)이라면 우리는 얇은 공기에서 정보를 생성 할 것입니다. n 요소의 데이터 구조가 있으면 n 가지 방법으로 하나의 요소를 선택할 수 있습니다. 이를 통해 log (n) 비트 정보를 인코딩 할 수 있습니다. 0 비트 (즉, O (1) 의미)로 인코딩 할 수 있다면 무한 압축 ZIP 알고리즘을 만들었습니다.