1장 메모리 안 정보
1.1 변수
1.2 복합 자료 구조
1.3 배열
1.4 문자열
1.5 변수와 배열이 중요한 이유
2장 이진 탐색
2.1 문제 정의
2.2 선형 스캔
2.3 이진 탐색 알고리즘
2.4 이진 탐색 적용하기
2.5 실행 시간 045
2.6 이진 탐색이 중요한 이유
3장 동적 자료 구조
3.1 배열의 한계
3.2 포인터와 참조
3.3 연결 리스트
3.4 연결 리스트에 대한 연산
3.5 이중 연결 리스트
3.6 항목들의 배열과 연결 리스트
3.7 연결 리스트가 중요한 이유
4장 스택과 큐
4.1 스택
4.2 큐
4.3 순서의 중요성
4.4 스택과 큐가 중요한 이유
5장 이진 탐색 트리
5.1 이진 탐색 트리 구조
5.2 이진 탐색 트리에서 탐색하기
5.3 이진 탐색 트리 변경하기
5.4 균형이 맞지 않는 트리의 위험성
5.5 이진 탐색 트리 대량 구축
5.6 이진 탐색 트리가 중요한 이유
6장 트라이와 적응형 자료 구조
6.1 문자열로 이뤄진 이진 탐색 트리
6.2 트라이 118
6.3 트라이가 중요한 이유
7장 우선순위 큐와 힙
7.1 우선순위 큐
7.2 최대 힙
7.3 우선순위 갱신하기
7.4 최소 힙
7.5 힙 정렬
7.6 힙이 중요한 이유
8장 격자
8.1 최근접 이웃 탐색 소개
8.2 격자
8.3 격자에 대한 탐색
8.4 격자 크기의 중요성
8.5 2차원을 넘어
8.6 공간 데이터를 넘어
8.7 격자가 중요한 이유
9장 공간 트리
9.1 쿼드 트리
9.2 k-d 트리
9.3 쿼드 트리와 k-d 트리가 중요한 이유
10장 해시 테이블
10.1 키를 사용한 저장과 탐색
10.2 해시 테이블
10.3 해시 함수
10.4 해시 테이블이 중요한 이유
11장 캐시
11.1 캐시 소개
11.2 만료와 캐시
11.3 다른 만료 전략들
11.4 캐시가 중요한 이유
12장 B-트리
12.1 B-트
이 책은 단순히 자료 구조의 종류를 나열하고 소개하는 책이 아니다. 어떻게 동작하는지, 왜 이 자료 구조가 중요한지에 초점을 맞춰 재미있게 풀어낸 입문서이다. 수많은 도해와 유머러스한 비유를 통해 자료 구조가 프로그램을 어떻게 더 효율적이고 유연하게 만드는지 쉽게 배울 수 있다. 책에 나오는 모든 자료 구조는 프로그래밍 언어에 구애 받지 않는 의사 코드로 보여주며, 변수와 배열부터 스택, 캐시, 블룸 필터, 쿼드 트리, 그래프에 이르기까지 15개 이상의 핵심 자료 구조를 구현해 본다. 박물관의 수집품 컬렉션 인덱스를 구성하거나 만화 대사를 이용해 홍보 문구를 만들고 다람쥐가 나무 줄기를 따라 목적지로 이동하는 걸 관찰하고, 심지어는 가장 가까운 커피숍을 찾는 방법 등 일상에서 있을 법 하면서도 기발한 예제로 구성했다.
이 책에서 다루는 내용
계산 성능을 최적화하기 위해 속도, 유연성, 메모리 사용량 간의 균형 맞추기
필요에 따라 동적으로 확장하거나 축소할 수 있는 자료 구조 설계하기
간단한 자료 구조를 결합해 캐시 항목 추정, 값과 키 매핑, 메모리에 맞춰 노드 크기 조정 등 고급 작업 수행하기
해시 테이블에서 데이터 검색, 이진 검색 트리로 검색 속도 향상시키기
B-트리로 검색 효율성 향상시키기, 무작위적 구조로 불량 데이터의 영향 줄이기
우리에게 익숙한 실생활 예시로 독자의 눈높이에 맞춰 설명하기 때문에 읽는 내내 재미있고 추상적인 개념들도 충분히 이해할 수 있다. 자료 구조를 따로 배운 적이 없거나 기억이 잘 나지 않아 빠르게 복습하고 싶다면 이 책 한 권으로 끝내길 추천한다.
이 책은 ‘자료 구조’를 통해 바라보는 계산적 사고(computational thinking에 대한 책이다. 자료 구조는 데이터를 조직적으로 구성하고 저장하기 위한 구조다. 이 책은 유용한 자료 구조를 모아둔 레시피 이상의 책이다. 단순히 자료 구조를 모은 것에 그치지 않고, 각 자료 구조의 근본이 되는 생각과 복잡한 문제를 해결할 때 자료 구조가 미치는