Post

DataStructure - 정적 배열(Static Array)과 동적 배열(Dynamic Array)이란?

본 글은 『얄코의 가장 쉬운 자료구조와 알고리즘』을 참고하여 개인 학습 목적으로 이해한 내용을 정리한 것입니다.

  • 정적 배열: 배열의 크기가 고정되어 있는 배열
  • 동적 배열: 배열의 크기 만큼 요소가 모두 찬 상태에서 새로운 요소를 추가하려고 할 경우 더 넓은 메모리 공간을 동적으로 할당해주는 배열
    • 단, 동적 배열도 내부적으로는 정적 배열을 사용하며, 공간이 부족해질 경우 더 큰 정적 배열을 새로 할당한 뒤 기존 요소들을 복사하는 방식으로 동작함.

Swift에서 제공하는 Array는 동적 배열임.

Java의 정적 배열을 활용한 동적 배열 동작 구현 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Main {
    public static void main(String[] args) {
        String[] array = {"apple", "banana", "orange", "fruit"};
        String[] newArray = new String[array.length + 1];

        int insertIndex = 2;

        for(int i = 0; i < insertIndex; i++){
            newArray[i] = array[i];
        }

        newArray[insertIndex] = "hello";

        for(int i = insertIndex; i < newArray.length - 1; i++){
            newArray[i + 1] = array[i];
        }

        System.out.println(Arrays.toString(newArray));
    }
}

Java의 경우 위와 같이 직접 정적 배열을 활용하여 동적 배열을 구현해도 되긴하지만, ArrayList라는 클래스를 제공하기 때문에 해당 클래스를 통해 편리하게 동적 배열을 사용 가능함.

This post is licensed under CC BY 4.0 by the author.