배열
개념
배열은 같은 타입의 데이터를 연속된 메모리 공간에 저장하는 자료구조이다.
특징
- 연속된 메모리 공간 사용
배열은 데이터를 연속된 메모리 공간에 저장한다.
- 빠른 메모리 할당 및 해제
배열 생성 시 연속된 메모리 공간을 할당하므로 메모리 관리가 효율적이다.
- 캐시 효율성
배열과 같은 연속된 자료구조는 특정 원소에 접근 시 인접 원소 일부를 캐시로 가져오므로, 캐시 지역성이 좋다.
- 인덱스를 통한 빠른 접근
배열은 연속된 메모리 공간에 저장되므로, 인덱스를 통해 O(1)의 빠른 시간 복잡도로 배열의 각 요소에 접근할 수 있다.
- 데이터 탐색 시 O(n)의 시간 복잡도
배열에서 특정 값을 찾으려면 최악의 경우 모든 요소를 확인해야하므로 O(n)의 시간이 소요될 수 있다.
- 동일한 데이터 타입 저장
배열 선언 시 지정한 하나의 데이터 타입만 저장할 수 있다. 즉 서로 다른 타입의 데이터를 함께 저장할 수 없다.
- 중간 삽입/삭제의 비효율성
배열의 중간에 데이터를 삽입하거나 삭제하려면 해당 위치 이후의 모든 요소를 이동시켜야하므로 O(n)의 시간이 소요될 수 있다.
- 메모리 낭비 가능성
필요한 크기보다 배열의 크기가 클 경우 사용하지 않는 빈 메모리가 발생할 수 있다.
배열은 메모리 구조상 빠른 접근성과 단순한 구조를 가지지만, 크기를 변경하거나 중간 삽입/삭제와 같은 연산들이 비효율적이다.
정적 배열 (Static Array)
개념
데이터를 저장하기 전 배열의 크기를 미리 지정하여, 그 크기만큼 연속적인 메모리 공간을 예약해두고 사용하는 배열이다.
한 번 크기를 정하면 더 이상 크기를 변경할 수 없다.