[JS] 자료구조(Data Structure) 종류

자료구조의 개념, 공부방향, 종류

image

자료구조(Data Structure)

데이터를 메모리에 효율적으로 배치하고 저장하고 관리하는 방법을 의미한다. 데이터 특성에 맞는 자료구조를 선택하는 일은 효율적인 알고리즘을 위해서 필수적인 일이다.

  • 목적: 서비스나 어플리케이션에 필요한 데이터를 제공하고 효율적으로 검색(접근), 삽입, 삭제할 수 있으려면 해당 기능에 적합한 자료구조를 쓰는 것이 중요하다.
  • 종류: 배열, 단일 연결리스트, 이중 연결리스트, 스택, 해시 테이블 등

자료구조 공부방향

  • Order 자료 구조 안에 있는 데이터들의 순서가 보장되는지
  • Unique 중복된 데이터가 들어갈 수 있는지
  • Search 검색할 때 얼마나 효율적인지
  • Modification 수정할 때 얼마나 효율적인지
  • 시간이 없다면 구현방법, 사항을 일일이 공부하는 것 보다는, 해당 자료구조는 어떤 상황에 쓰는 것이 좋고 어떤 API 들이 있는지 위주로 공부하면 좋음.

자료구조의 종류

1. 선형 자료구조: 데이터가 선처럼 길게 나열된 자료구조

  1. 랜덤 접근 가능: 모든 데이터에 O(1)로 접근 가능한 자료구조
  • 배열(Array)
  • 해시(Hash)
    • 해시 테이블(Hash Table)
    • 해시함수에 키값을 넣어 주소값을 얻고 그 주소에 위치한 버킷에 저장된 데이터를 가져오는 방식
    • 항상 O(1)이 보장되는 것은 아니다.
  1. 랜덤 접근 불가능: 모든 데이터에 O(1)로 접근이 보장되지 않는 자료구조

선형 자료구조 탐색법

  • 순차 탐색
  • 이분 탐색

2. 비선형 자료구조: 선형 자료구조가 아닌 모든 자료구조

그래프 순회 알고리즘

  • 깊이 우선 탐색(DFS)
  • 너비 우선 탐색(BFS)

트리 순회 알고리즘

  • 전위 순회(preorder)
  • 중위 순회(inorder)
  • 후위 순회(postorder)
  • 레벨 순서 순회

이진 트리(Binary Tree)

이진 검색 트리(Binary Search Tree: BST)

그 외

기타

References