참고도서 : C로 배우는 쉬운 자료구조(4판) 한빛출판네트워크 이지영 2021
같은 자료형을 가진 자료들을 나열하여 메모리에 연속적으로 저장하여 만든 자료의 그룹
모든 자료형에 대해 배열 구성이 가능하며, 형태에 따라 고차원 배열을 정의할 수 있음

배열 구조에서 각각의 데이터 아이템(요소)을 가리키는 용어
배열의 요소를 간단히 구별하기 위해 사용하는 번호 인덱스는 항상 0으로 시작한다.(C, C++ Java등의 경우에 한함)
배열을 선언하는 형식은 아래와 같다.
자료형 배열이름 [배열요소의 개수];
Java 에서는 아래와 같다.
int[] numArray = new int[5];
고정된 크기를 가지며, 컴파일 타임에 크기가 결정되는 배열
즉, 미리 배열의 크기를 지정하고 선언하는 것
public class ResizeStaticArrayExample {
public static void main(String[] args) {
int[] staticArray = new int[5]; // 크기가 5인 정적 배열 생성
// 원소 추가
staticArray[0] = 10;
staticArray[1] = 20;
staticArray[2] = 30;
staticArray[3] = 40;
staticArray[4] = 50;
System.out.println("현재 배열 크기: " + staticArray.length);
// 크기 변경 (더 큰 크기로)
int newSize = 10;
int[] newStaticArray = new int[newSize];
System.arraycopy(staticArray, 0, newStaticArray, 0, staticArray.length);
staticArray = newStaticArray;
System.out.println("재할당 후 배열 크기: " + staticArray.length);
// 크기 변경 (더 작은 크기로)
int smallerSize = 3;
int[] newSmallerStaticArray = new int[smallerSize];
System.arraycopy(staticArray, 0, newSmallerStaticArray, 0, smallerSize);
staticArray = newSmallerStaticArray;
System.out.println("더 작은 크기로 재할당 후 배열 크기: " + staticArray.length);
}
}
동적 배열은 원소를 추가하거나 삭제할 때 크기를 동적(자동)으로 조정할 수 있는 데이터 구조이다.
배열의 크기가 동적으로 변경되어야 하는 경우
(원소를 자주 추가하거나 제거 해야 할때)
메모리 사용량을 효율적으로 관리해야하는 경우
원소를 임의로 검색할 때 시간이 더 걸릴 수 있음 (원소를 추가하거나 제거할 때 내부에서 원소의 위치가 변경되기 떄문)