배열은 데이터 구조의 하나로, 데이터를 1열로 나열한 것이다. 지난 글의 리스트와는 대도적으로 데이터에 접근하기는 쉽지만 추가나 삭제에 시간이 걸린다.
1
배열의 개념도이다. 세 개의 문자열 "Blue", "Yellow", "Red"가 데이터로 저장되어 있다.
2
데이터는 연속된 메모리 영역에 순서대로 저장된다.
3
연속된 영역에 저장돼 있어 첨자를 사용해 메모리의 주소를 계산할 수 있다. 따라서 각 데이터에 바로 접근할 수 있다. 이것을 임의 접근(random access, 랜덤 액세스)이라고 한다.
4
예를 들어 "Red"에 접근하고 싶다면 a[2]라고 지정하여 쉽게 "Red"에 접근 가능하다.
5
배열은 임의의 위치에 데이터를 추가, 삭제해야 하는 경우에 리스트에 비해 많은 시간이 걸리는 단점이 있다. 예로 "Green"을 두 번째 요소 (a[1])에 추가하는 경우를 보자.
6
먼저, 배열의 마지막에 추가를 위한 공간(a[3])을 확보한다.
7
공간이 비므로 하나씩 데이터를 옆으로 이동한다. 먼저 "Red"를 이동한다.(a[2] -> a[3])
8
다음 "Yellow"를 이동한다.(a[1] -> a[2])
9
빈 공간(a[1])에 "Green"을 추가한다.
10
추가 작업이 완료되었다.
11
반대로 "Green"을 삭제할 때를 보자.
12
먼저 요소("Green")을 삭제한다.
13
빈 곳을 하나씩 왼쪽으로 옮겨 매꾼다. 먼저 "Yellow"를 이동.(a[2] -> a[1])
14
다음은 "Red"를 이동.(a[3] -> a[2])
15
마지막으로, 남은 공간(a[3])을 삭제한다. 이로써 "Green" 삭제 작업이 완료되었다.
오늘도 쉬웠다!
참고 서적: