자바와 함께하는 자료구조의 이해 (개정판)

자바와 함께하는 자료구조의 이해 (개정판)

$34.88
Description
컴퓨터를 체계적으로 배우려면 자바, C, C++, 파이썬과 같은 언어 중 적어도 하나의 언어를 어려움 없이 구사할 수 있어야 하고, 그다음엔 반드시 자료구조를 이해하여야 한다. 아무리 프로그래밍 언어를 잘 이해하고 있더라도 자료구조에 대한 기본지식 없이 실제 응용을 위한 효율적인 소프트웨어를 작성하는 것은 거의 불가능하다. 이는 한글을 깨우치자마자 시나 소설을 쓸 수 없는 것과 같은 이치이다.
자바는 PC에서 데이터 센터, 게임 콘솔에서 슈퍼컴퓨터, 핸드폰에서 인터넷까지 거의 모든 플랫폼에서 수행되는 프로그래밍 언어로서 다른 언어에 비해 소프트웨어를 개발하는 데 매우 유용한 프로그래밍 환경을 제공한다. 자바 언어는 특히 수행 성능의 최적화가 필요한 소프트웨어 개발에 매우 적합하여 소프트웨어 개발자들이 가장 선호하는 프로그래밍 언어이다.

본서는 자료구조의 이해에 있어 가장 기본적이고 공통된 부분을 발췌, 정리함과 동시에 비교적 새로운 주제인 좌편향(Left-Leaning) 레드 블랙 트리, Tim Sort와 이중 피벗 퀵 정렬(Dual Pivot Quick Sort), 소셜 네트워크 분석(Social Network Analysis)의 응용을 추가하였다. 본서는 기존 서적들에서 공통적으로 강조하고 있는 포인터 개념, 연결 리스트, 스택, 큐, 트리 앞부분 등은 기본적인 개념 위주로 설명하고, 자료구조의 핵심이라 할 수 있는 탐색 트리, 해싱, 우선순위 큐, 정렬, 그래프를 심도 있게 다루며, 아울러 새로운 자료구조를 추가로 소개한다.

독자들의 쉬운 이해를 위해 본서는 대부분의 자료구조를 다음의 다섯 단계에 따라 설명한다.
1. 주어진 자료구조에 대한 이해
2. 핵심 아이디어 소개
3. 예제
4. 자바 프로그램
5. 수행 시간 분석
본서는 기본적으로 각 자료구조의 필요성을 소개하고, 자료구조를 이해하는 데 도움이 되는 핵심 아이디어를 살펴본다. 또한 자료구조에 대한 예제를 통해 이해를 도우며, 자바 프로그램으로 구현한 자료구조를 제시하고, 수행 시간을 분석한다. 아울러 자료구조의 응용 및 활용 분야를 살펴보고, 대부분의 자바 프로그램을 Eclipse 통합 개발 환경에서 실제로 실행시킨 결과 화면 또한 보여준다. 단, 몇몇 자료구조에 대한 자바 프로그램은 너무 길어 생략하였고 개념 위주로 서술하였다.

저자

양성봉

저자:양성봉
연세대학교공과대학,학사
UniversityofOklahoma,컴퓨터과학,석사
UniversityofOklahoma,컴퓨터과학,박사
연세대학교컴퓨터과학과교수
현재연세대학교컴퓨터과학과명예교수

목차

PART01자료구조를배우기위한준비
1.1자료구조와추상데이터타입
1.2수행시간의분석
1.3수행시간의점근표기법
1.4자바언어에대한기본지식
1.5순환
요약
연습문제

PART02리스트
2.1배열
2.2단순연결리스트
2.3이중연결리스트
2.4원형연결리스트
요약
연습문제

PART03스택과큐
3.1스택
3.2큐
3.3데크(Deque)
요약
연습문제

PART04트리
4.1트리
4.2이진트리
4.3이진트리의연산
4.4서로소집합을위한트리연산
요약
연습문제

PART05탐색트리
5.1이진탐색트리
ㅤㅤ5.1.1이진탐색트리클래스
ㅤㅤ5.1.2탐색연산
ㅤㅤ5.1.3삽입연산
ㅤㅤ5.1.4최솟값찾기
ㅤㅤ5.1.5최솟값삭제연산
ㅤㅤ5.1.6삭제연산
5.2AVL트리
ㅤㅤ5.2.1AVL트리의회전연산
ㅤㅤ5.2.2삽입연산
ㅤㅤ5.2.3삭제연산
5.32-3트리
ㅤㅤ5.3.1탐색연산
ㅤㅤ5.3.2삽입연산
ㅤㅤ5.3.3삭제연산
5.4레드블랙트리
ㅤㅤ5.4.1레드블랙트리클래스
ㅤㅤ5.4.2탐색연산
ㅤㅤ5.4.3레드블랙트리의기본연산
ㅤㅤ5.4.4삽입연산
ㅤㅤ5.4.5최솟값삭제연산
5.5B-트리
ㅤㅤ5.5.1탐색연산
ㅤㅤ5.5.2삽입연산
ㅤㅤ5.5.3삭제연산
ㅤㅤ5.5.4B-트리의확장
요약
연습문제

PART06해시테이블
6.1해시테이블
6.2해시함수
6.3자바의hashCode()
6.4개방주소방식
ㅤㅤ6.4.1선형조사
ㅤㅤ6.4.2이차조사
ㅤㅤ6.4.3랜덤조사
ㅤㅤ6.4.4이중해싱
6.5폐쇄주소방식
6.6기타해싱
6.7재해시와동적해싱
6.8해시방법의성능비교
요약
연습문제

PART07우선순위큐
7.1이진힙
7.2허프만코딩
7.3기타우선순위큐
ㅤㅤ7.3.1Leftist힙
ㅤㅤ7.3.2Skew힙
ㅤㅤ7.3.3이항힙
ㅤㅤ7.3.4피보나치힙
요약
연습문제

PART08정렬
8.1선택정렬
8.2삽입정렬
8.3쉘정렬
8.4힙정렬
8.5합병정렬
8.6퀵정렬
8.7정렬의하한및정렬알고리즘의비교
8.8기수정렬
8.9외부정렬
요약
연습문제

PART09그래프
9.1그래프
ㅤㅤ9.1.1그래프용어
ㅤㅤ9.1.2그래프자료구조
9.2그래프탐색
ㅤㅤ9.2.1깊이우선탐색
ㅤㅤ9.2.2너비우선탐색
9.3기본적인그래프알고리즘
ㅤㅤ9.3.1위상정렬
ㅤㅤ9.3.2이중연결성분
ㅤㅤ9.3.3강연결성분
9.4최소신장트리
ㅤㅤ9.4.1Kruskal알고리즘
ㅤㅤ9.4.2Prim알고리즘
ㅤㅤ9.4.3Sollin알고리즘
9.5최단경로알고리즘
ㅤㅤ9.5.1Dijkstra알고리즘
ㅤㅤ9.5.2Bellman-Ford알고리즘
ㅤㅤ9.5.3Floyd-Warshall알고리즘
9.6소셜네트워크분석
요약
연습문제

부록
I상각분석
II자바메모리
III가비지컬렉션
IV이진탐색
V이진트리프로그램
VI이중피벗퀵정렬과TimSort
VIICutProperty

참고문헌
찾아보기

출판사 서평

본서의각Part의내용을간략히나열해보면다음과같다.

·Part1자료구조를배우기위한준비
자료구조와추상데이터타입,수행시간의분석,수행시간의점근표기법,자바언어의기본지식,그리고순환에대해살펴본다.

·Part2리스트
배열,단순연결리스트,이중연결리스트,원형연결리스트를설명한다.

·Part3스택과큐
스택,큐,데크자료구조를다룬다.

·Part4트리
일반적인트리,이진트리,이진트리에서의순회및기타기본적인연산,집합을위한트리연산으로서Union-Find연산을각각소개한다.

·Part5탐색트리
이진탐색트리,AVL트리,2-3트리,레드블랙트리(Left-LeaningRedBlackTree),B-트리를소개하며,특히이진탐색트리,AVL트리,레드블랙트리는자바프로그램을통하여상세히설명한다.

·Part6해시테이블
해시함수,충돌해결방법으로선형조사,이차조사,랜덤조사,이중해싱,체이닝을배우고,새로운충돌해결방식인융합해싱(CoalescedHashing),2-방향체이닝(Two-WayChaining),뻐꾸기해싱(CuckooHashing)을소개하며,재해싱과동적해싱을각각살펴본다.

·Part7우선순위큐
이진힙과그의응용인허프만압축알고리즘을소개하고,Leftist힙,Skew힙,이항힙(BinomialHeap),피보나치힙(FibonacciHeap)을각각소개한다.

·Part8정렬
기본적인정렬알고리즘인선택정렬,삽입정렬을다루고,이보다효율적인쉘정렬,합병정렬,퀵정렬,힙정렬을살펴보며,정렬문제의하한을알아보고,특정환경에서사용되는기수정렬과외부정렬을소개한다.또한비교적최근에소개되었고자바,파이선,안드로이드의시스템정렬로채택된TimSort와자바의원시타입시스템정렬인이중피벗퀵정렬(DualPivotQuicksort)은부록에서소개한다.

·Part9그래프
깊이우선탐색,너비우선탐색을공부하고,기본적인그래프알고리즘인위상정렬,이중연결성분,강연결성분알고리즘을살펴본다.또한Kruskal,Prim,Sollin의최소신장트리알고리즘을소개하고,Dijkstra,Bellman-Ford,Floyd-Warshall최단경로알고리즘을이해하고분석하며마지막으로그래프의응용으로서소셜네트워크분석(SocialNetworkAnalysis)의중심성(Centrality)과커뮤니티찾기(CommunityDetection)를소개한다.

·부록
상각분석(AmortizedAnalysis)을상세히알아보고,자바메모리를살펴보며,자바의가비지컬렉션(GarbageCollection)의여러가지방법을소개한다.또한이진탐색트리와관련된이진탐색을소개하며,Part4의이진트리를위한자바프로그램을제공하며,TimSort와이중피벗퀵정렬(DualPivotQuickSort)을살펴보며,최소신장트리알고리즘들이왜항상정확한해를반환하는지를CutProperty의증명을통하여알아본다.

본서는자바언어에대한기본개념을갖춘학부2학년생을위하여집필되었으나,변리사및기술고시의준비서로서도충실한역할을할것이며,올림피아드와같은경시대회를준비하는학생들에게도도움이될것이다.또한데이터사이언스,인공지능,전자공학,수학,생명공학,경영학을전공하는학생들에게는자료구조를스스로배우고익힐수있는좋은입문서가되리라생각한다.독자들이자료구조의기본개념을이해함으로써궁극적으로는실세계에서어떤문제와마주하더라도효율적으로문제를해결하는프로그램을작성할수있게되기를바란다.

특히개정판에는270여개의객관식과주관식연습문제가추가되었고,대부분각Part의내용에대한정확한이해를확인할수있도록출제되었다.적지않은수의문제는IT기업의입사인터뷰문제로도손색없고,또기출문제들도포함되어있다.그리고각Part맨뒤에는IT회사의Job인터뷰문제가쉬어가기로추가되었다.일일이다열거할수는없지만,마지막단계에서원고를꼼꼼히읽고검토해준양원석군의도움에고마움을표한다.또한풍부한저작활동경험으로지속적인조언을아끼지않으신최윤철교수님의성원에깊은감사를드린다.아울러이책의시작과완성의전과정을이끌어주신생능출판사김승기사장님과최복락상무님,출판과정에서많이애써주신김민보차장님및편집담당관계자분들께도진심으로감사드린다.