Language/Java

검색이 빠른 자료구조

Raconer 2023. 7. 12. 22:02
728x90

O(1) > O(log n) > O (n) > O(n log n) > O(n^2) > O(n^3) > O(2^n) > O(n!)

HashMap

  • 단건 검색 시간 복잡도 : O(1)
  • 범위 탐색 시간 복잡도 : O(N)
  • 전방 일치 탐색 불가 ex) like 'AB%'

List

  • 정렬되지 않은 리스트 탐색 시간 복잡도 : O(N)
  • 정렬된 리스트 탐색 시간 복잡도 : O(logN)
  • 정렬 되지 않은 리스트 정렬 시간 복잡도 : O(N) ~ O(N * logN)
  • 삽입/삭제 비용이 매우 높다

Tree

  • 트리 높이에 따라 시간 복잡도 결정
  • 트리의 높이를 최소화 하는 것이 중요!
  • 한쪽으로 노드가 치우치지 않도록 균형을 잡아 주는 트리 사용
    • ex) Red-Black Tree, B+Tree

B+Tree

  • 삽입/삭제시 항상 균형을 이룸
  • 하나의 노드가 여러 개의 자식 노드를 가질 수 있음
  • 리프노드에만 데이터 존재
    • 연속적인 데이터 접근 시 유리
728x90

'Language > Java' 카테고리의 다른 글

버퍼링(Buffering)과 스트림(Stream)  (0) 2023.07.01
JVM 메모리 구조  (0) 2023.06.10
클래스(class), 객체(object), 인스턴스(instance) 차이  (0) 2023.04.16