하지만 한 가지 문제가 있다. 애초에 컴퓨터는 배열에 5개의 메모리 셀을 할당했고 6번째 원소를 추가하려면 이 배열에 셀을 추가로 할당해야 할 수 있다. 많은 프로그래밍 언어가 내부에서 자동으로 처리하지만 언어마다 방식이 다르므로 너무 깊숙이 파고들지는 않겠다.
앞선 예처럼 배열 끝에 삽입하는 것이 아니라 배열의 맨 처음이나 중간에 데이터를 삽입하면 문제가 달라진다. 이때는 삽입할 공간을 만들기 위해 많은 데이터 조각을 이동시켜야 하므로 단계가 늘어난다.
예를 들어 배열의 인덱스 2에 "figs"를 추가해 보자. 다음 그림으로 살펴보자.
▲ 그림 1-12
위와 같이 하려면 "cucumbers", "dates", "elderberries"를 오른쪽으로 옮겨서 "figs"를 넣을 공간을 만들어야 한다. 하지만 여기에도 몇 개의 단계가 필요하다. "dates"를 옮길 공간을 만들려면 먼저 "elderberries"를 한 셀 오른쪽으로 옮겨야 한다. 다음으로 "cucumbers"를 위한 공간을 만들려면 "dates"를 옮겨야 한다. 한 단계씩 살펴보자.
1단계: "elderberries"를 오른쪽으로 옮긴다.
▲ 그림 1-13