Page 23 -
P. 23
어떻게 보면 읽기와 반대다. 읽기는 컴퓨터에 인덱스를 제공하고 그 인덱스에 들어 있는 값을 반
환하라고 요청한다. 반면 검색은 컴퓨터에 값을 제공하고 그 값이 들어 있는 인덱스를 반환하라고
요청한다.
비슷해 보이지만 효율성 측면에서 어마어마하게 다르다. 인덱스에서 읽기는 컴퓨터가 어떤 인덱
스든 바로 가서 인덱스에 있는 값을 찾을 수 있으니 매우 빠르다. 이와 달리 검색은 컴퓨터가 특정
값으로 바로 갈 수 없으니 오래 걸린다.
이것이 컴퓨터의 중요한 특징이다. 컴퓨터는 모든 메모리 주소에 한 번에 접근하지만 각 메모리
주소에 어떤 값이 있는지 바로 알지 못한다.
예를 들어 앞서 봤던 과일과 야채 배열 예제를 보자. 컴퓨터는 각 셀에 실제 어떤 내용이 들어 있
는지 바로 알 수 없다. 컴퓨터에서 배열은 꼭 다음처럼 보인다.
그림 1-6
배열에서 과일을 찾으려면 컴퓨터는 각 셀을 한 번에 하나씩 조사하는 방법밖에 없다.
다음의 그림은 컴퓨터가 쇼핑 목록 배열 내에서 "dates"를 찾는 과정을 보여준다.
컴퓨터는 가장 먼저 인덱스 0을 확인한다.
그림 1-7
인덱스 0에 있는 값은 현재 찾고 있는 "dates"가 아닌 "apples"이므로 컴퓨터는 다음 그림에서
보듯이 다음 인덱스로 이동해서 검색을 계속한다.
036