1장에서는 자료 구조를 소개하고 올바른 자료 구조의 선택이 코드의 성능에 얼마나 크게 영향을 미칠 수 있는지 알아봤다. 배열이나 집합처럼 매우 유사해 보이는 두 자료 구조라도 효율성이 크게 다를 수 있다.
2장에서는 어떤 자료 구조를 이미 결정했더라도 코드의 효율성에 영향을 미칠 수 있는 중요한 요인이 있음을 살펴볼 것이다. 즉, 사용할 알고리즘을 적절하게 선택하는 문제를 살펴볼 것이다.
알고리즘이라는 단어가 어렵게 들리지만, 그렇게 어렵지 않다. 알고리즘이란 단순히 어떤 과제를 완수하는 명령어 집합일 뿐이다.
심지어 시리얼 한 그릇을 준비하는 과정도 정의된 단계들을 따라 당면한 과제를 달성하므로 엄연히 알고리즘이다. 시리얼 준비 알고리즘은 다음과 같은 네 단계를 따른다(나에게는 이 정도면 충분하다).
1. 그릇을 집는다.
2. 그릇에 시리얼을 따른다.
3. 그릇에 우유를 붓는다.
4. 그릇에 숟가락을 넣는다.
정해진 순서대로 따라가면 맛있는 아침 식사를 먹을 수 있다.
컴퓨팅 관점에서 알고리즘은 특정 과제를 달성하기 위해 컴퓨터에 제공되는 명령어 집합을 뜻한다. 어떤 코드를 작성하든 컴퓨터가 따르고 실행할 알고리즘을 만드는 것이다.
알고리즘을 쉽고 분명한 글로 표현해 컴퓨터에 제공하려는 명령어에 대한 세부 사항을 제시할 수도 있다. 책 전반에서 코드와 더불어 알기 쉬운 설명을 덧붙여 다양한 알고리즘이 어떻게 동작하는지 보이겠다.
때때로 같은 과제를 둘 이상의 알고리즘으로 완수할 수 있다. 1장 자료 구조가 중요한 까닭의 앞부분에서 보았던 짝수를 출력하는 두 가지 방법이 그 예다. 한 알고리즘이 나머지 알고리즘에 비해 단계가 두 배 더 걸렸다.
2장에서는 같은 문제를 해결하는 두 알고리즘을 선보인다. 그러나 이번에는 한 알고리즘이 나머지 알고리즘에 비해 훨씬 빠르다.
새 알고리즘을 분석하려면 새 자료 구조 하나를 살펴봐야 한다.