-데이터에 편리하게 접근하고 조작하기위한 데이터를 저장하거나 조직하는 방법
-각 자료구조의 본질과 컨셉을 이해하고 상황에 맞는 적절한 구조를 선택하는 것이 중요
-프로그래밍에서 사용되는 기본 데이터
-여러 데이터를 목적에 맞게 효과적으로 저장하는 자료 구조
-선형구조 1:1(저장되는 자료의 전후 관계)
비선형구조 1:n(데이터 항목 사이의 관계 1:n 또는 n:m)
-index가 존재해 순차적으로 데이터를 저장
-순서가 상관없더라도 서로 연결된 데이터를 저장할 때 사용
-Multi-dimensional Array(다중차원 배열) : 일반적으로 2D(2차원)array가 많이 사용
-실제 메모리상에서 물리적으로 데이터가 순차적으로 저장되기 때문에 배열은 순차적으로 데이터를 저장할 수 밖에 없다.
-이미 생성된 배열 수정가능
-동일한 값 여러번 삽입 가능
-요소 분리, 조작 가능
-중간에 요소를 삽입하거나 삭제할 경우 메모리가 많이 사용돼 다른 자료구조보다 느려진다.
(순차적으로 이어져있기때문에 삭제된 요소 뒤에 있는 요소들은 앞으로 한칸씩 이동해야한다.)
-처음에 배열이 생성될때 메모리를 미리 할당한다. (pre-allocation)
처음에 할당한 메모리보다 많은 양의 데이터를 저장하는 경우 메모리를 재할당해야한다. (re-sizing) 더 큰 메모리 할당 후 기존 데이터를 복사하고 그 이후부터 데이터를 채워야 한다.
정보가 자주 추가 삭제 되는 데이터, 사이즈 예측이 어려운 데이터는 다루기 적절하지 않다.
-순차열적인 데이터를 저장할 때 ex) 주식차트
-다차원 데이터를 다룰 때
-어떤 특정요소를 빠르게 읽어야할 때
-데이터 사이즈가 급변하지 않을때
-요소를 자주 추가 삭제하지 않을때
-한 번 정의 되면 수정할 수 없다.
-2~3개의 적은 수의 데이터를 저장할 때 사용한다.
-리스트보다 가볍고 메모리를 적게 먹는다.
장점
-간단한 값을 빨리 표현할 수 있다.
-함수에서 1개 이상 리턴하고 싶을 때 사용한다.
단점
-데이터만 담겨있기때문에 데이터가 무슨 의미인지 명확하지 않아 문맥을 보고 알아내야한다.