더북(TheBook)

어떻게 동작하는지 관찰하기 위해 빈 HashTable을 만들고, 항목들의 시퀀스를 추가해보자. 처음엔 LinearMap 2개로 시작한다. 따라서 처음 두 번의 add는 빠르다(크기 변경이 필요하지 않다). 각각이 1단위 작업이 걸린다고 하자. 다음 add는 크기 변경이 필요하다. 즉, 처음 두 항목을 재해시해야 하고(2단위 작업 이상이라고 하자) 세 번째 항목을 추가한다(1단위 작업). 다음 항목을 추가하는 것은 1단위 작업이므로 지금까지 4항목에 대한 전체 단위 작업은 6이다.

다음 add5단위 작업이 필요하지만, 다음 3개는 1단위 작업만 필요하고, 처음 8번의 add에 대한 전체 단위 작업은 14다.

다음 add9단위 작업이 필요하지만, 다음 크기 조정까지는 7번 더 추가할 수 있다. 따라서 처음 16번의 add에 대한 전체 단위 작업은 30이다.

32번의 add 이후에 전체 단위 작업은 62이고, 여러분도 어떤 패턴을 발견하기 시작했을 것이라고 희망한다. n번 추가 후, n2의 승수이면 총비용은 2n-2 단위 작업이 되고, add당 평균 작업은
2단위 작업보다 조금 적다. n2의 승수일 때가 최선의 경우가 된다. n이 다른 값일 때는 평균 작업이 약간 더 높지만, 이는 중요하지 않다. 중요한 것은 O(1)이라는 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.