사용목적은 첫번째, 상황에 맞게 데이터를 담아내고 관리하는 구조를 만들기 위해.
두번째로는 적절한 데이터구조를 사용하면 전체적인 개발 과정에 영향을 줄 수 있기 때문.
오늘 알아볼 자료구조는
가장 기본적이고 단순하지만 그만큼 사용빈도가 높은 배열구조이다.
Array는 말 그대로 순차적으로 번호를 지정할 수 있습니다. (0부터 시작하는 index를 지정)
특정 요소로써 지정(indexing)된 값(value)를 불러 올 수 있습니다.
번호가 지정된 각 값(value)와 index를 합쳐 요소(element)라 불립니다.
특징
원하는 요소의 특정 부분을 분리하여 관리가 가능합니다.
그룹화를 시켜주기 때문에 비슷한 부분으로 데이터를 묶어서 작업을 할 수 있습니다.
다중차원의 배열도 가능하기 때문에 배열 안에 배열이 될 수 있습니다. (2차원 배열 추후 공부)
동일한 값도 중복으로 삽입이 가능합니다. (지워지거나, 하나만 인식하지 않고 순서대로 들어온 것을 인식합니다.)
단점
특정한 요소를 중간에 삭제 할 경우 삭제된 요소 뒷 부분의 모든 요소를 앞으로 이동시켜야 해서 양이 많은 경우 데이터 관리의 어려움이 생긴다. >> 중간에 요소를 삭제 시 다른 자료구조들 보다 속도가 낮을 수 있다.
마찬가지로 중간에 요소를 추가할 경우에도 느려진다.
처음 생성될 때 데이터의 메모리를 정해 놓고 사용하기 때문에 추가 되거나 삭제되면 데이터가 낭비되는 경우가 있다.
Array Resizing
- 사이즈를 다시 변경한다.
- 처음 할당된 메모리 이상으로 요소가 추가된다면 resized되야 한다.
- 용량도 많이 차지되고 오래 걸린다..
(만약 1000개의 메모리를 할당했는데, 추가 되는 요소가 200개라면?)
-> 1200개의 메모리를 새로 생성 한다
-> 기존에 있던 1000개의 메모리를 복사 한다
-> 1001번 데이터 부터 순차적으로 추가된다.
-> 총 1200개의 데이터로 변경 된다.
어따 써먹지??
내 생각엔 약간 Array는 재개발 들어가는 셋방주인의 심정이 공감되는 느낌이다.
index(방호수)가 지정된 셋방(element)에 세들어 사는 사람(value)이 순서대로 들어와 사는데 중간에 한 명이 이사가고 재개발이 된다고 빈 방으로 오래 유지되는... (채워지는데 느려서) 그 상황과 비슷하다고 해야하나싶다..