데브허브 | DEVHUB | 자료구조 - 정적 배열과 동적 배열
- 배열에서 특정 요소를 삭제하거나 삽입할 때, 뒤따르는 요소들을 이동시켜야 하므로 시간 복잡도는 O(n)입니다. ⏳
- 정적 배열은 크기가 고정되어 있어, 공간이 꽉 차면 더 이상 요소를 추가할 수 없는 한계가 있습니다. 🚫
- 동적 배열은 공간이 부족할 경우, 기존 배열보다 큰 새로운 메모리 공간을 할당하고 모든 요소를 복사하여 옮긴 후 새 요소를 추가합니다. 🚚
- 동적 배열의 크기 확장(재할당) 과정은 모든 요소를 복사해야 하므로 O(n)의 시간 복잡도를 가집니다. 📈
- 파이썬 리스트는 동적 배열처럼 작동하여 개발자가 직접 공간 관리를 할 필요가 없지만, 자바의 기본 배열은 정적이며
ArrayList와 같은 라이브러리가 동적 배열 기능을 제공합니다. 🐍
- 자바에서 동적 배열을 직접 구현하려면
ensureCapacity와 같은 메서드를 통해 공간 부족 시 새 배열을 생성하고 기존 요소를 복사하는 로직을 작성해야 합니다. 🏗️
- 메모리상에서 배열의 크기를 단순히 확장할 수 없는 이유는 인접한 메모리 공간이 비어있다는 보장이 없기 때문입니다. 🗺️