일반적으로 가장 자주 사용 되는 자료 구조
- 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를 통해 곧바로 읽을 수 있기 때문
- 데이터의 사이즈가 급변하게 자주 변하지 않을 때
- 요소가 자주 삭제 되거나 추가되지 않을 때