Data Structure(자료구조)

Kay·2020년 3월 12일
0

자료구조란?

데이터에 편리하고 효율적으로 접근하고 변경하기 위해서 데이터를 조직, 관리, 저장하는 방법.

각 자료구조가 갖는 장점과 한계를 잘 아는 것이 중요.
(데이터를 알맞는 곳에!)

자료구조의 분류


이미지 출처 : http://key-to-programming.blogspot.com/2016/01/key-to-data-structure.html

Primitive Data Structure (단순구조)
: 프로그래밍에서 사용되는 기본 데이터 타입
Non-Primitive Data Structure (비단순구조)
: 단순한 데이터를 저장하는 구조가 아니라, 여러 데이터를 목적에 맞게 효과적으로 저장하는 자료 구조.

  • Linear Data Structure (선형구조)
    : 저장되는 자료의 전 후 관계가 1:1
  • Non-Linear Data Structure (비선형구조)
    : 데이터 항목 사의의 관계가 1:n 또는 n:m

자주 사용되는 자료구조

Array(JS), List(Python)

  • 실제 메모리 옆에 저장되므로 순서가 있고, 인덱싱 가능
  • 데이터를 빨리 읽어야 할 때 쓰기 좋으며, 가장 많이 사용됨
  • Array Reaizing(새로운 메모리 확보, 할당)이 가능하긴 하나, 쉽지 않음
  • 자주 삭제, 삽입 하는 경우, 데이터의 사이즈가 급변하는 경우에는 다른 걸 쓰는게 낫다

Tuple

  • 순차 저장이 가능
  • 2-5개의 적은 요소를 담을 때 사용
  • 수정할 수 없음 (immutable)
  • 함수 return 값 같이 적은 갯수를 빠르게 return 할 때 쓰면 좋음

Set

  • hash 값을 bucket에 저장하기 때문에 순서가 없고, 중복 값도 없음.
  • 가장 밑단에는 Array가 있음
  • Bucket 수로 나는 나머지를 인덱스로 쓰며, 70% 이상 차면 Resizing을 해서 충돌을 피함.

Stack & Queue

- Stack : First In Last Out(FILO)

  • 함수를 호출할 때, 브라우저에서 뒤로 갈 때 이용.
  • Stack over flow의 그 Stack이며, Stack over flow는 무한루프를 돌 때 만날 수 있는 에러.

- Queue : First In First Out(FIFO)

  • Priority Queue : 우선순위가 있는 Queue. 운영체제에서 급하게 돌려야하는 시스템이 있을 때 등에 사용.
profile
new blog✨ https://kay-log.tistory.com/

0개의 댓글