정의
데이터를 순서대로 연속된 메모리 공간에 저장합니다.컴퓨터가 대량의 데이터를 처리할 때, 데이터를 개별 변수로 다루면 메모리 낭비와 유지 관리가 복잡해집니다.
메모리 용량은 제한되어 있으므로 개발자들은 데이터를 효율적으로 관리하고 순차적으로 접근할 방법을 고민해 왔습니다.
연속적인 메모리 할당, 순차적인 데이터 관리, 빠른 임의 접근(random access)을 충족시키기 위해 고안되었습니다.
같은 타입의 데이터를 일렬로 저장하며, 각 요소에 대해 단순한 주소 계산만으로 빠르게 접근할 수 있습니다.
특징
기본적이고 강력한 자료구조 중 하나입니다.💡 메모리 구조와 일치
- 컴퓨터의 연속 메모리 모델과 가장 잘 맞아 컴퓨터 하드웨어와 메모리 접근 방식에 최적화되어 있어서 성능상 큰 이점을 가집니다.
💡 같은 타입 자료형 저장
- 기본형 데이터와 참조형 데이터를 모두 넣을 수 있으나, 하나의 타입으로만 이루어진 데이터들의 모음입니다.
💡 순서대로 저장
- 배열의 요소들은 메모리 상에 논리적으로나 물리적으로 연속된 공간에 순서대로 저장됩니다.
- 이 순서는 각 요소의 위치를 나타내는 인덱스의 기준이 됩니다.
💡 인덱스를 통한 직접 접근
- 각 요소는 0부터 시작하는 고유한 인덱스를 가집니다.
- 인덱스를 사용하여 O(1) 시간 복잡도로 원하는 위치의 데이터에 빠르게 접근할 수 있습니다.
- 이는 배열의 가장 큰 장점 중 하나입니다.
💡 고정된 크기
- 생성할 때 크기를 미리 지정하므로 추후에 크기를 변경 할 수 없습니다.
- 정해진 크기의 배열을 쓸 때나 고정 크기의 버퍼, 테이블을 만들 때 사용됩니다.
시간 복잡도
Index를 통한 빠른 조회가 가능합니다.| 연산 | 시간 복잡도 | 비고 |
| 조회 | O(1) | 인덱스를 통해서 매우 빠르게 접근이 가능합니다. |
| 검색 | 탐색 | O(n) O(log n) |
정렬되지 않은 배열의 경우, 특정 값을 찾기 위해 전체 탐색 (for 문) 정렬된 배열의 경우, 중간값을 기준으로 범위를 좁힘 (이진 탐색) |
| 삽입(중간) | O(n) | 중간에 끼워넣으면 뒤 요소들 이동 필요 |
| 삭제(중간) | O(n) | 중간 요소 삭제 시 뒤 요소들 이동 필요 |