더북(TheBook)

이제 식료품 리스트 배열에 적용해 보자. 예제 배열은 메모리 주소 1010에서 시작한다. 컴퓨터에 인덱스 3에 있는 값을 읽으라고 명령하면 컴퓨터는 다음과 같은 과정을 밟는다.

1. 배열의 인덱스는 0부터 시작하며 인덱스 0의 메모리 주소는 1010이다.

2. 인덱스 3은 인덱스 0부터 정확히 세 슬롯 뒤에 있다.

3. 따라서 인덱스 3을 찾으려면 1010+3인 1013 메모리 주소로 간다.

인덱스 3의 메모리 주소가 1013임을 알아낸 컴퓨터는 바로 접근해서 "dates"라는 값을 찾을 수 있다.

보다시피 컴퓨터는 어떤 메모리 주소에든 한 번에 접근해 어떤 인덱스든 읽을 수 있으니 배열 읽기는 매우 효율적인 연산이다. 컴퓨터의 사고 과정을 세 부분으로 나누어 설명했으나 우선은 가장 핵심적인 컴퓨터가 메모리 주소로 가는 단계를 중점적으로 살펴봤다(이어지는 장들에서 중점적으로 살펴야 할 단계를 어떻게 알아내는지 설명한다).

한 단계로 끝나는 연산은 당연히 가장 빠른 연산 유형이다. 배열은 기초 자료 구조일 뿐만 아니라 빠르게 읽을 수 있는 아주 강력한 자료 구조이다.

그렇다면 컴퓨터에 인덱스 3에 들어 있는 값이 무엇인지 묻는 대신 "dates"가 배열의 어느 인덱스에 들어 있는지 물어보면 어떨까? 이를 검색 연산이라 부르며 다음 절에서 알아본다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.