본문 바로가기

알고리즘/알고리즘 도감

배열

지난 글: [알고리즘] - 리스트

 

배열은 데이터 구조의 하나로, 데이터를 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" 삭제 작업이 완료되었다.

 

오늘도 쉬웠다!

 

참고 서적:

'알고리즘 > 알고리즘 도감' 카테고리의 다른 글

  (0) 2022.06.02
스택  (0) 2022.06.01
리스트  (0) 2022.05.30
데이터 구조란?  (0) 2022.05.29
계산 시간을 표현하는 방법  (0) 2022.05.28