위키득계정 ↗
기술

배열

배열기술
영문명
Array
원소 식별
인덱스
전형적 접근 비용
인덱스를 통한 조회 O(1)
주의점
배열과 동적 배열, 언어별 리스트는 구분
배열은 인덱스로 원소를 식별해 접근하는 자료 구조다. 전형적인 고정 크기 배열은 일정한 크기의 원소를 연속된 저장 공간에 배치한다. 위치를 통한 접근과 중간 삽입의 비용은 서로 다르다.

위치로 원소 찾기

목록의 세 번째 원소에 접근하려면 배열의 시작 위치와 원소 크기로 해당 위치를 계산할 수 있다. 앞의 원소들을 하나씩 지나가며 찾을 필요가 없다는 점이 연결 리스트와 구분되는 특징이다. 인덱스가 0에서 시작하는지는 언어와 인터페이스에 따라 정해진다.

접근과 검색의 차이

인덱스를 이미 아는 조회와 특정 값이 들어 있는지 찾는 검색은 다른 작업이다. 정렬되지 않은 배열에서 값 하나를 찾으려면 많은 원소를 비교할 수 있다. O(1) 접근이라는 말이 모든 값 검색도 O(1)이라는 뜻은 아니다.

중간에 끼워 넣기

순서를 유지하는 연속 배열의 중간에 원소를 넣으려면 뒤쪽 원소들을 옮겨야 할 수 있다. 삭제도 비슷한 이동을 요구할 수 있다. 이러한 비용은 인덱스로 원소를 읽는 비용과 별도로 고려해야 한다.

크기를 늘리는 구현

동적 배열은 여유 공간을 확보하고 필요할 때 더 큰 공간으로 옮기는 등의 방법으로 크기 변화를 지원한다. 언어에서 배열이나 리스트라는 이름을 쓰더라도 실제 저장 방식과 비용은 다를 수 있다. 이름보다 제공하는 연산과 구현 조건을 확인하는 것이 정확하다.

관련 문서

자료 구조 / 기억 장치 / 알고리즘 / 힙 (자료 구조) / 자료형