[Data Structure] 1. Array

박민규·2020년 7월 6일
0

javascript

목록 보기
4/8

일반적으로 가장 자주 사용 되는 자료 구조

  • Array
  • Tuple
  • Set
  • Dictionary
  • Stack & Queue
  • Tree

1. Array

순차적으로 데이터를 저장하는 자료 구조

  • 순서가 상관 없더라도 서로 연결된 데이터들을 저장할때 일반적으로 사용

기타 특징

  • 삽입이 순서대로 저장
    이미 생성된 리스트도 수정가능 (mutable)
    동일한 값 여러번 삽입 가능
    다중차원 배열

왜 Array가 순차적으로 데이터를 저장하는가??

  • 실제 메모리 상에서, 즉 물리적으로 데이터가 순차적으로 저장되기 때문.

데이터에 순서가 있기 때문에

  • 1) index가 존재하며
    : 0부터 시작하는 index
  • 2) Indexing
    : Index를 사용해 특정 요소를 array(list)로 부터 읽어 들이는 것이 가능하고
  • 3) Slicing
    : 요소의 특정 부분, 즉 n번째 index부터 m번째 index까지 따로 분리해 조작하는 것이 가능합니다.

단점

1. Removing or Adding Elements

특정 위치에 있는 중간의 요소가 삭제 or 추가 되는 경우에,
메모리가 순차적으로 있어야 해서 삭제,추가 된 곳 부터 뒤에 있는 모든 요소들이 하나씩 이동된다

  • 이뜻은 배열에서 요소를 삭제하는 것은 다른 자료 구조에 비해 느릴 수 있다는 뜻.

Array는 정보가 자주 삭제 되거나 추가되는 데이터를 담기에는 적절하지 않다.

2. Array Resizing

배열은 메모리가 순차적으로 채워지기 때문에 배열이 처음 생성될 때 어느정도 메모리를 미리 할당한다. (pre-allocation)

하지만 미리 할당한것보다 요소들이 더 많아 진다면 resizing이 필요하다 = 메모리를 더 할당해야됨 추가 된 메모리도 순차적이여야함

배열의 resizing은 상대적으로 오래걸리는 operation

Array는 사이즈 예측이 잘 안 되는 데이터를 다루는것엔 적절하지 X


언제 사용해야 하는가???

  • 순차열적인 데이터를 저장할 때
    • ex) 주식 가격. 어제의 2만원과 오늘의 2만원이 다름 >>> 값보다는 순서가 중요한 데이터
  • 다차원 데이터를 다룰 때 >>> Multi-dimensional Array
  • 어떠한 특정 요소를 빠르게 읽어야 할 때 >> index를 통해 곧바로 읽을 수 있기 때문
  • 데이터의 사이즈가 급변하게 자주 변하지 않을 때
  • 요소가 자주 삭제 되거나 추가되지 않을 때
profile
개(발)초보

0개의 댓글