목차
머리말 = 4
베타테스터의 한마디 = 5
이 책을 효율적으로 읽는 방법 = 6
목차 = 8
부록 CD에는 뭐가 들어 있을까? = 16
첫째마당 알고리즘 개요
01 알고리즘의 역할 = 19
01.1. 알고리즘이 뭐죠? = 20
알고리즘의 유래 = 20
알고리즘이란? = 20
01.2. 알고리즘이 필요한 이유 = 22
알고리즘이 없는 프로그램 = 22
알고리즘의 세 가지 요소 = 25
01.3. 자료 구조와 알고리즘의 관계 = 31
자료 구조란? = 31
기본적인 자료 구조 = 33
정리해 볼까요? = 36
02 알고리즘의 분석 = 37
02.1. 수학적 배경 = 38
알고리즘의 수학적 표기 방법 = 38
∑ 공식 = 43
02.2. 분석의 대상 = 46
무엇을 분석할 것인가? = 46
C 언어의 구문에 대한 ○표기법 = 47
02.3. 알고리즘의 분석과 최적화 = 50
프로그램의 수학적 분석 = 50
프로그램의 최적화 = 53
정리해 볼까요? = 56
둘째마당 기본 알고리즘
03 연결 리스트 = 59
03.1. 연결 리스트의 정의 = 60
노드와 링크의 정의 = 60
구조체를 이용한 연결 리스트의 표현 = 62
03.2. 연결 리스트의 삽입과 삭제 = 64
연결 리스트의 특징 = 64
연결 리스트의 삽입 알고리즘 = 65
연결 리스트의 삭제 알고리즘 = 76
03.3. 이중 연결 리스트와 원형 연결 리스트 = 88
이중 연결 리스트와 원형 연결 리스트의 구조 = 88
이중 연결 리스트의 삽입과 삭제 알고리즘 = 89
03.4. 연결 리스트의 구현 = 97
연결 리스트의 초기화 = 97
연결 리스트의 삽입 알고리즘의 실행 = 99
연결 리스트의 삭제 알고리즘의 실행 = 105
정리해 볼까요? = 106
04 설거지 알고리즘, 스택 = 107
04.1. 스택의 개념 = 108
스택이란? = 108
04.2. 스택의 구현 = 110
접시와 찬장 = 110
푸시와 팝 = 111
04.3. 스택의 응용 - 계산기 프로그램 = 119
계산기 프로그램의 개념 = 119
계산기에 스택 적용하기 = 121
스택을 이용한 계산기 프로그램 코드 = 123
괄호 계산이 되는 계산기 = 129
04.4. 비주얼 프로그램을 이용한 스택의 구현 = 135
스택의 초기화 = 135
스택에 필요한 노드와 연결 리스트 만들기 = 137
푸시 함수 = 139
정리해 볼까요? = 142
05 매표소 알고리즘, 큐 = 143
05.1. 큐의 개념 = 144
큐 알고리즘 = 144
05.2. 배열을 이용한 큐의 구현 = 146
배열을 이용한 큐 = 146
배열을 이용한 큐 알고리즘 분석 = 149
05.3. 연결 리스트를 이용한 큐의 구현 = 153
연결 리스트를 이용한 큐 = 153
연결 리스트를 이용한 큐의 코드 분석 = 156
05.4. 비주얼 프로그램을 이용한 큐의 구현 = 163
큐의 초기화 = 163
비주얼 C++로 만들어 본 큐의 코드 = 164
정리해 볼까요? = 174
06 트리 = 175
06.1. 트리의 개념과 용어 = 176
트리 구조 = 176
트리의 용어 = 177
이진 트리 = 178
이진 트리의 종류 = 179
06.2. 트리의 순회 알고리즘 = 181
이진 트리에서 이용하는 트리 순회 방법 = 181
전위 순회 알고리즘 = 182
중위 순회 알고리즘 = 196
후위 순회 알고리즘 = 205
레벨 순회 알고리즘 = 216
정리해 볼까요? = 224
07 트리의 응용 = 225
07.1. AVL 트리 = 226
이진 트리의 문제점 = 226
AVL 트리 = 227
AVL 트리의 구성 = 229
07.2. 2-3 트리 = 249
AVL 트리의 문제 해결사, 2-3 트리 = 249
2-3 트리의 노드 삽입 = 251
2-3 트리의 성능 평가 = 259
정리해 볼까요? = 260
셋째마당 활용 알고리즘
08 간단한 정렬 알고리즘 Ⅰ = 263
08.1. 다양한 정렬 알고리즘 = 264
정렬 알고리즘의 종류 = 264
08.2. 선택 정렬 알고리즘 = 266
선택 정렬 알고리즘의 이해 = 266
선택 정렬의 실행과 성능 = 275
선택 정렬 알고리즘의 분석 = 286
08.3. 삽입 정렬 알고리즘 = 289
삽입 정렬 알고리즘의 이해 = 289
삽입 정렬의 실행과 성능 = 294
삽입 정렬 알고리즘의 분석 = 300
정리해 볼까요? = 302
09 간단한 정렬 알고리즘 Ⅱ = 303
09.1. 버블 정렬 알고리즘 = 304
버블 정렬 알고리즘의 이해 = 304
버블 정렬의 실행과 성능 = 308
버블 정렬 알고리즘의 분석 = 312
09.2. 셸 정렬 알고리즘 = 315
셸 정렬 알고리즘의 이해 = 315
셸 정렬의 실행과 성능 = 320
셸 정렬 알고리즘의 분석 = 323
09.3. 네 가지 기본 정렬 알고리즘의 비교 = 325
일반적인 경우의 비교 = 325
최선의 경우의 비교 = 326
최악의 경우의 비교 = 327
정리해 볼까요? = 328
10 고급 정렬 알고리즘 Ⅰ = 329
10.1. 퀵 정렬 알고리즘 = 330
퀵 정렬 알고리즘의 이해 = 330
퀵 정렬의 실행과 성능 = 339
퀵 정렬 알고리즘의 분석 = 343
10.2. 기수 정렬 알고리즘 = 346
기수 정렬 알고리즘의 이해 = 346
기수 정렬의 실행과 성능 = 353
기수 정렬 알고리즘의 분석 = 357
정리해 볼까요? = 358
11 고급 정렬 알고리즘 Ⅱ = 359
11.1. 병합 정렬 알고리즘 = 360
병합 정렬 알고리즘의 이해 = 360
병합 정렬의 실행과 성능 = 367
병합 정렬 알고리즘의 분석 = 372
11.2. 힙 정렬 알고리즘 = 373
힙 정렬 알고리즘의 이해 = 373
힙 정렬의 실행과 성능 = 383
힙 정렬 알고리즘의 분석 = 387
11.3. 정렬 알고리즘의 비교 = 389
성능 그래프를 통한 정렬 알고리즘 비교 = 389
정리해 볼까요? = 390
12 기본적인 검색 알고리즘 = 391
12.1. 순차 검색 알고리즘 = 392
순차 검색 알고리즘의 이해 = 392
12.2. 순차 검색 알고리즘에서 데이터의 삽입과 삭제 = 397
순차 검색 알고리즘에서 데이터의 삽입 = 397
순차 검색 알고리즘에서 데이터의 삭제 = 404
12.3. 순차 검색 알고리즘의 구조적 수정 = 411
연결 리스트를 이용한 순차 검색 알고리즘 = 411
정리해 볼까요? = 422
13 이진 검색 알고리즘 = 423
13.1. 이진 검색 알고리즘 = 424
이진 검색 알고리즘의 이해 = 424
13.2. 이진 검색 트리 알고리즘 = 430
이진 검색 트리 알고리즘의 이해 = 430
이진 검색 트리 알고리즘에서 데이터의 삽입 = 432
이진 검색 트리 알고리즘에서 데이터의 삭제 = 440
13.3. 검색 알고리즘의 구현 = 450
비주얼 C++로 만들어 본 막대 정렬 프로그램의 검색 알고리즘 = 450
순차 검색 알고리즘의 구현 = 455
이진 검색 알고리즘의 구현 = 456
정리해 볼까요? = 458
14 해시 알고리즘 = 459
14.1. 해시 알고리즘 = 460
키-주소 검색 알고리즘 = 460
키-매핑 알고리즘 = 463
14.2. 해시 알고리즘의 문제 해결 = 470
해시 알고리즘의 데이터 중복 문제 = 470
데이터 중복 문제 해결하기 = 477
14.3. 이상적인 해시 알고리즘 = 482
해시 테이블의 데이터 패턴 = 482
이상적인 해시 알고리즘 구현하기 = 483
정리해 볼까요? = 486
찾아보기 = 487