자료구조 part 1. 배열

SUM·2021년 2월 9일
0

자료구조 공부

목록 보기
1/3
post-thumbnail

자료구조란 무엇인가?

  • 데이터를 관리하고 탐색 접근할 때 더 빠르고 편리하게 하도록 저장하는 방법
  • 자료구조의 종류에 따라 사용하는 방법과 용도가 다르기 때문에 자료구조 각각의 장단점을 파악하여 유도리 있게 사용하는 것이 중요 관건이다.
  • 자료구조의 본래의 목적이 무엇인지 파악하고 있는 것이 중요하다 >>> 이유는 자료구조를 이해하고 사용하는 것과 모르고 사용하는 것에는 데이터의 용량관리 혹은 시간관리에서 큰 차이가 발생하기 때문

사용목적은 첫번째, 상황에 맞게 데이터를 담아내고 관리하는 구조를 만들기 위해.
두번째로는 적절한 데이터구조를 사용하면 전체적인 개발 과정에 영향을 줄 수 있기 때문.


오늘 알아볼 자료구조는

Array (배열)

가장 기본적이고 단순하지만 그만큼 사용빈도가 높은 배열구조이다.

Array는 말 그대로 순차적으로 번호를 지정할 수 있습니다. (0부터 시작하는 index를 지정)
특정 요소로써 지정(indexing)된 값(value)를 불러 올 수 있습니다.
번호가 지정된 각 값(value)와 index를 합쳐 요소(element)라 불립니다.


특징

  1. 원하는 요소의 특정 부분을 분리하여 관리가 가능합니다.

  2. 그룹화를 시켜주기 때문에 비슷한 부분으로 데이터를 묶어서 작업을 할 수 있습니다.

  3. 다중차원의 배열도 가능하기 때문에 배열 안에 배열이 될 수 있습니다. (2차원 배열 추후 공부)

  4. 동일한 값도 중복으로 삽입이 가능합니다. (지워지거나, 하나만 인식하지 않고 순서대로 들어온 것을 인식합니다.)


단점

  1. 특정한 요소를 중간에 삭제 할 경우 삭제된 요소 뒷 부분의 모든 요소를 앞으로 이동시켜야 해서 양이 많은 경우 데이터 관리의 어려움이 생긴다. >> 중간에 요소를 삭제 시 다른 자료구조들 보다 속도가 낮을 수 있다.

  2. 마찬가지로 중간에 요소를 추가할 경우에도 느려진다.

  3. 처음 생성될 때 데이터의 메모리를 정해 놓고 사용하기 때문에 추가 되거나 삭제되면 데이터가 낭비되는 경우가 있다.

Array Resizing
- 사이즈를 다시 변경한다.
- 처음 할당된 메모리 이상으로 요소가 추가된다면 resized되야 한다.
- 용량도 많이 차지되고 오래 걸린다..
(만약 1000개의 메모리를 할당했는데, 추가 되는 요소가 200개라면?)
-> 1200개의 메모리를 새로 생성 한다
-> 기존에 있던 1000개의 메모리를 복사 한다
-> 1001번 데이터 부터 순차적으로 추가된다.
-> 총 1200개의 데이터로 변경 된다.


So..

어따 써먹지??

  • 주가(주식)의 변동 데이터 (시간의 순서대로 순차적으로 데이터가 쌓이기 때문)
  • 어떤 특정한 요소의 정보를 빠르게 읽어야 할 때 (지정된 숫자(index)로 당장 알아 볼 수 있기 때문)
  • 요소가 일정하게 유지 될 때 (추가 또는 삭제가 적은 자료일 경우)
  • 데이터가 크기가 갑자기 커지거나 작아지거나 하지 않는 경우
  • 다차원 배열을 사용할 때 (추후 공부)

내 생각엔..

내 생각엔 약간 Array는 재개발 들어가는 셋방주인의 심정이 공감되는 느낌이다.
index(방호수)가 지정된 셋방(element)에 세들어 사는 사람(value)이 순서대로 들어와 사는데 중간에 한 명이 이사가고 재개발이 된다고 빈 방으로 오래 유지되는... (채워지는데 느려서) 그 상황과 비슷하다고 해야하나싶다..

profile
#코린이탈출#프론트엔드준비

0개의 댓글