- 동일한 데이터 타입을 갖는 여러 요소들을 연속적인 위치에 저장하는 자료구조
특징
- 고정된 크기 : 배열은 선언 시 크기를 정하기 때문에 생성 후엔 변경할 수 없다
- 크기를 변경하려면 새로운 배열을 생성하고 데이터를 복사해야 한다
- 빠른 접근 : 인덱스를 통해 O(1) 시간 복잡도로 특정 요소에 접근할 수 있다
- 인덱스는 시작점부터 상대적인 위치를 나타내는데, 시작 주소가 100이라 가정하고, 각 정수 요소가 4byte를 차지한다면, 인덱스 3의 주소는 100 + 4*3 = 112가 된다
- 연속적인 메모리 할당 : 모든 데이터 요소가 메모리 상에서 연속적으로 위치해 있다
- 메모리의 연속적인 공간이 필요하기 때문에 큰 배열을 사용할 땐 메모리 제한에 주의해야 한다
- 데이터 타입 제한 : 동일한 데이터 타입 요소들만 저장할 수 있다
- 다른 타입 데이터를 저장할려면 별도 배열이 필요하다
리스트와 차이
- 크기 조절 : 배열은 고정된 크기를 가지지만, 리스트는 동적으로 크기를 조절할 수 있다
- 메모리 배치 : 배열은 연속적인 위치로 데이터를 저장하지만, 리스트는 포인터로 요소를 연결하기 때문에 연속적일 필요가 없다
- 리스트가 삽입, 삭제에 대해선 더 유연하지만, 특정 요소를 접근할 땐 노드를 순차적으로 탐색해야 해서 O(n) 시간 복잡도를 가진다, 반면 배열은 O(1) 시간 복잡도로 더 빠른 편
장점과 단점
- 장점 : 배열은 인덱스를 통해 빠른 데이터 접근이 가능하고, 구현도 간단하다
- 단점 : 크기가 고정되어 있어 선언 시 최대 길이를 지정해야 하고, 수정 시 새 배열을 생성해야 한다, 이는 추가적인 메모리와 시간을 요구하고, 큰 배열을 사용시 메모리 관리에 주의해야 한다
예시 코드
const numbers = [1, 2, 3, 4, 5];
console.log("3번째 요소:", numbers[2]); // 3