[Data Structure & Alogrithm] Array

📝Array

img

📌 핵심 요약

"배열은 같은 Type의 데이터 여러개를 저장하기 위한 자료구조다. 원소들의 논리적 순서와 물리적 순서가 같기 때문에 index로 상수시간에 원소에 접근할 수 있다. 또한 배열의 원소들은 메모리의 연속된 공간에 저장되기 때문에 캐시 효율성이 높아 빠르다."

📌 설명

  • 배열은 같은 Type의 데이터 여러개를 저장하기 위한 자료구조이다.

  • 원소들의 논리적 순서와 물리적 순서가 같다.

  • 배열의 원소들은 메모리의 연속된 위치에 저장된다. (캐시의 효율성과 직결)

⚔️ 배열의 장점

◾ 배열의 데이터들은 메모리에 연속적으로 저장된다. 따라서 locality로 인한 cache hit rate가 높아서 데이터 처리가 빠르다.

◾ 연결 리스트는 데이터가 메모리에 연속적으로 저장되지 않는다. 따라서 locality가 보장되지 않고 cache hit rate배열에 비해 낮다.

📌 시간 복잡도

  • 탐색 O(1) : index를 통해 상수 시간에 원소에 접근할 수 있다. (Random Access)
  • 삽입 O(N) : 원소를 삽입하기 위해 배열내 원소들을 하나씩 뒤로 shift 해줘야한다.
  • 삭제 O(N) : 원소를 삭제한 후에 뒤에 있는 원소들을 하나씩 앞으로 shift 해줘야한다.