자료구조가 중요한 이유
배열과 집합. 똑같아 보이는 두 자료구조가 네 가지 연산—읽기·탐색·삽입·삭제—에서 어떻게 갈라지는지 단계 수로 분석한다.
제 2 장알고리즘이 중요한 이유
정렬된 배열과 이진 탐색. 같은 문제를 푸는 절차가 여럿일 때, 어떤 알고리즘을 고르느냐가 속도를 결정한다.
제 3 장Big O 표기법
O(1), O(log N), O(N). 수학을 빼고 배우는 효율성의 공통 언어. 데이터가 늘 때 단계 수가 어떻게 변하는가.
빅 오를 이용한 코드 속도 향상
버블 정렬과 O(N²). 중첩 루프가 만드는 이차 시간의 함정과, 그것을 선형 시간으로 끌어내리는 최적화.
제 5 장코드 최적화하기
선택 정렬과 상수 무시 규칙. Big O가 같아도 한 알고리즘이 두 배 빠를 수 있다.
제 6 장낙관적 시나리오를 위한 최적화
삽입 정렬과 평균 경우. 최악만 보지 말고 평균·최선의 시나리오까지 고려하라.
해시 테이블로 초고속 검색
해시 함수, 버킷, 충돌, 분리 연쇄법. O(1) 조회의 비밀과 로드 팩터의 균형 행위.
제 8 장스택과 큐로 우아한 코드
LIFO와 FIFO. 제약이 만드는 우아함. 괄호 검사 린터와 인쇄 큐로 보는 임시 데이터 처리.
제 9 장재귀로 재귀하기
함수가 자신을 부른다. 기저 사례, 호출 스택, 그리고 재귀가 빛나는 파일 시스템 순회.
속도를 위한 재귀 알고리즘
퀵소트와 퀵셀렉트. 파티셔닝과 분할 정복으로 평균 O(N log N)에 도달하는 길.
제 11 장노드 기반 자료구조
연결 리스트와 이중 연결 리스트. 메모리에 흩어진 노드들을 링크가 잇는다.
제 12 장이진 트리로 모든 것을 빠르게
이진 탐색 트리. 순서를 지키면서도 검색·삽입·삭제 모두 O(log N).
제 13 장그래프로 모든 것을 연결
정점과 간선. 너비 우선 탐색, 가중 그래프, 그리고 다익스트라의 최단 경로.
제 14 장공간 제약 대처하기
공간 복잡도. 빅 오로 메모리를 재고, 속도와 메모리 사이의 트레이드오프를 읽는다.