Page 16 -
P. 16
컴퓨터가 배열의 특정 인덱스에 있는 값을 읽을 때 한 번의 단계로 바로 갈 수
있는 데는 다음과 같은 점들이 복합적으로 작용한다.
1. 컴퓨터는 모든 메모리 주소에 한 번에 갈 수 있다(메인 거리 123번지까지 운
전해서 간다고 생각하면 쉽다. 위치를 정확히 알고 있으므로 한 번의 이동으
로 운전해서 갈 수 있다).
2. 각 배열에 저장된 내용은 메모리의 시작 주소다. 따라서 컴퓨터는 손쉽게 시
작 주소를 얻는다.
3. 배열의 인덱스는 0부터 시작한다.
앞선 예제에서 컴퓨터에 인덱스 3에 있는 값을 읽으라고 명령하면 컴퓨터는 다
음과 같은 과정을 밟는다.
1. 배열의 인덱스는 0부터 시작하며 인덱스 0의 메모리 주소는 1010이다.
2. 인덱스 3은 인덱스 0부터 정확히 세 슬롯 뒤에 있다.
3. 따라서 인덱스 3을 찾으려면 1010+3인 1013 메모리 주소로 간다.
1013이라는 메모리 주소에 접근한 컴퓨터는 "dates"라는 값을 반환한다.
보다시피 배열 읽기는 한 단계 만에 끝나는 매우 효율적인 연산이다. 한 단계로
끝나는 연산은 당연히 가장 빠른 연산 유형이다. 배열이 그토록 강력한 자료 구
조인 이유 중 하나는 어떤 인덱스의 값이든 빠르게 찾을 수 있기 때문이다.
그렇다면 컴퓨터에 인덱스 3에 들어 있는 값이 무엇인지 묻는 대신 배열이
"dates"를 포함하는지 물어보면 어떨까? 이를 검색 연산이라 부르며 다음 절
에서 알아본다.
1장 자료 구조가 중요한 까닭 027
algorith06.indd 27 2018-06-25 오전 10:32:03