A Practical Introduction to Data Structures and Algorithm Analysis:Java Edition
副标题:无
分类号:
ISBN:9787505375819
微信扫一扫,移动浏览光盘
简介
本书采用了当前十分流行且适合于Internet环境的面向对象的程序设计语言Java作为算法描述语言。本书利用Java的接口来定义抽象数据类型,并把数据结构原理和算法分析技术有机地结合在一起,系统地介绍了各种类型的数据结构和排序、检索的各种方法。书中还引入了一些比较高级的数据结构与先进的算法分析技术,并介绍了可计算性理论的一般知识。
本书概念清晰,逻辑性强,内容新颖,可作为大专院校计算机软件专业与计算机应用专业的教材和参考书,也可供计算机工程技术人员参考。
目录
preface
part i preliminaries
chapter 1 data structures and algorithms
1. 1 a philosophy of data structures
1. 1. 1 the need for data structures
1. 1 .2 costs and benefits
1. 1 .3 goals of this book
1. 2 abstract data types and data structures
1. 3 problems, algorithms, and programs
1. 4 algorithm efficiency
1. 5 further reading
1. 6 exercises
chapter 2 mathematical preliminaries
2. 1 sets
2. 2 miscellaneous notation
2. 3 logarithms
2. 4 recursion
2. 5 summations and recurrences
2. 6 mathematical proof techniques
2. 6. 1 proof by contradiction
.2. 6. 2 proof by mathematical induction
2. 7 estimating
2. 8 further reading
2. 9 exercises
chapter 3 algorithm analysis
3. 1 introduction
3. 2 best, worst, and average cases
3. 3 a faster computer, or a faster algorithm?
3. 4 asymptotic analysis
3. 4. 1 upper bounds
3. 4. 2 lower bounds
3. 4. 3 q notation
3. 4. 4 simplifying rules
3. 5 calculating the running time of a program
3. 6 analyzing problems
3. 7 multiple parameters
3. 8 space bounds
3. 9 some practical considerations
3. 10 further reading
3. 11 exercises
3. 12 projects
part ii fundamental data structures
chapter 4 lists, stacks, and queues
4. 1 lists
4. 1. 1 array-based list implementation
4. 1. 2 linked list
4. 1. 3 comparison of list implementations
4. 1. 4 element implementations
4. 1. 5 doubly linked list
4. 1. 6 circular linked lists
4. 2 stacks
4. 2. 1 array-based stacks
4. 2. 2 linked stacks
4. 2. 3 comparison of array-based and linked stacks
4. 2. 4 implementing recursion
4. 3 queues
4. 3. 1 array-based queues
4. 3. 2 linked queues
4. 3. 3 comparison of array-based and linked queues
4. 4 exercises
4. 5 projects
chapter 5 binary trees
5. 1 definitions and properties
5. 1. 1 the full binary tree theorem
5. 1. 2 a binary tree node adt
5. 2 binary tree traversals
5. 3 binary tree implementations
5. 3. 1 pointer-based node implementations
5. 3. 2 space requirements
5. 3. 3 array implementation for complete binary trees
5. 4 huffman coding trees
5. 4. 1 building huffman coding trees
5. 4. 2 assigning and using huffman codes
5. 5 binary search trees
5. 6 heaps and priority queues
5. 7 further reading
5. 8 exercises
5. 9 projects
chapter 6 general trees
6. 1 general tree definitions and terminology
6. 1. 1 an adt for general tree nodes
6. 1. 2 general tree traversals
6. 2 the parent pointer implementation
6. 3 general tree implementations
6. 3. 1 list of children
6. 3. 2 the left child/right sibling implementation
6. 3. 3 dynamic node implementations
6. 3. 4 dynamic "left child/right sibling" implementation
6. 4 k-ary trees
6. 5 sequential tree implementations
6. 6 further reading
6. 7 exercises
6. 8 projects
chapter 7 graphs
7. 1 terminology and representations
7. 2 graph implementations
7. 3 graph traversals
7. 3. 1 depth-first search
7. 3. 2 breadth-first search
7. 3. 3 topological sort
7. 4 shortest-paths problems
7. 4. 1 single-source shortest paths
7. 4. 2 all-pairs shortest paths
7. 5 minimum-cost spanning trees
7. 5. 1 prim's algorithm
7. 5. 2 kruskal's algorithm
7. 6 further reading
7. 7 exercises
7. 8 projects
part iii sorting and searching
chapter 8 internal sorting
8. 1 sorting terminology and notation
8. 2 three sorting algorithms
8. 2. 1 insertion sort
8. 2. 2 bubble sort
8. 2. 3 selection sort
8. 2. 4 the cost of exchange sorting
8. 3 shellsort
8. 4 quicksort
8. 5 mergesort
8. 6 heapsort
8. 7 binsort and radix sort
8. 8 an empirical comparison of sorting algorithms
8. 9 lower bounds for sorting
8. 10 further reading
8. 11 exereises
8. 12 projects
chapter 9 file processing and external sorting
9. 1 primary versus secondary storage
9. 2 disk and tape drives
9. 2. 1 disk access costs
9. 2. 2 magnetic tape
9. 3 buffers and buffer pools
9. 4 the programmer's view of files
9. 5 external sorting
9. 6 simple approaches to external sorting
9. 7 replacement selection
9. 8 multiway merging,
9. 9 further reading
9. 10 exercises
9. 11 projects
chapter 10 searching
10. 1 searching sorted arrays
10. 2 self-organizing lists
10. 3 searching in sets
10. 4 hashing
10. 4. 1 hash functions
10. 4. 2 open hashing
10. 4. 3 closed hashing
10. 5 further reading
10. 6 exercises
10. 7 projects
chapter 11 indexing
11. 1 linear indexing
11. 2 isam
11. 3 tree indexing
11. 4 2-3 trees
11. 5 b-trees
11. 5. 1 b+-trees
11. 5. 2 b-tree analysis
11. 6 further reading
11. 7 exercises
11. 8 proects
part iv applications and advanced topics
chapter 12 lists and arrays revisited
12. 1 skip lists
12. 2 multilists
12. 3 matrix representations
12. 4 memory management
12. 4. 1 dynamic storage allocation
12. 4. 2 failure policies and garbage collection
12. 5 further reading
12. 6 exercises
12. 7 projects
chapter 13 advanced tree structures
13. 1 tries
13. 2 splay trees
13. 3 spatial data structures
13. 3. 1 the k-d tree
13. 3. 2 the pr quadtree
13. 3. 3 other spatial data structures
13. 4 further reading
13. 5 exercises
13. 6 projects
chapter 14 analysis techniques
14. 1 summation techniques
14. 2 recurrence relations
14. 2. 1 estimating upper and lower bounds
14. 2. 2 expanding recurrences
14. 2. 3 divide and conquer recurrences
14. 2. 4 average-case analysis of quicksort
14. 3 amortized analysis
14. 4 further reading
14. 5 exercises
14. 6 projects
chapter 15 limits to computation
15. 1 introduction
15. 2 reductions
15. 3 hard problems
15. 3. 1 np-completeness
15. 3. 2 getting around np-complete problems
15. 4 impossible problems
15. 4. 1 uncountability
15. 4. 2 the halting problem is unsolvable
15. 4. 3 determining program behavior is unsolvable
15. 5 further reading
15. 6 exercises
15. 7 projects
part v appendix
appendix a java tutorial for c and pascal programmers
a. 1 example 1: interface for lists
a. 2 example 2: array-based list implementation
a. 3 example 3: linked list implementation
bibliography
part i preliminaries
chapter 1 data structures and algorithms
1. 1 a philosophy of data structures
1. 1. 1 the need for data structures
1. 1 .2 costs and benefits
1. 1 .3 goals of this book
1. 2 abstract data types and data structures
1. 3 problems, algorithms, and programs
1. 4 algorithm efficiency
1. 5 further reading
1. 6 exercises
chapter 2 mathematical preliminaries
2. 1 sets
2. 2 miscellaneous notation
2. 3 logarithms
2. 4 recursion
2. 5 summations and recurrences
2. 6 mathematical proof techniques
2. 6. 1 proof by contradiction
.2. 6. 2 proof by mathematical induction
2. 7 estimating
2. 8 further reading
2. 9 exercises
chapter 3 algorithm analysis
3. 1 introduction
3. 2 best, worst, and average cases
3. 3 a faster computer, or a faster algorithm?
3. 4 asymptotic analysis
3. 4. 1 upper bounds
3. 4. 2 lower bounds
3. 4. 3 q notation
3. 4. 4 simplifying rules
3. 5 calculating the running time of a program
3. 6 analyzing problems
3. 7 multiple parameters
3. 8 space bounds
3. 9 some practical considerations
3. 10 further reading
3. 11 exercises
3. 12 projects
part ii fundamental data structures
chapter 4 lists, stacks, and queues
4. 1 lists
4. 1. 1 array-based list implementation
4. 1. 2 linked list
4. 1. 3 comparison of list implementations
4. 1. 4 element implementations
4. 1. 5 doubly linked list
4. 1. 6 circular linked lists
4. 2 stacks
4. 2. 1 array-based stacks
4. 2. 2 linked stacks
4. 2. 3 comparison of array-based and linked stacks
4. 2. 4 implementing recursion
4. 3 queues
4. 3. 1 array-based queues
4. 3. 2 linked queues
4. 3. 3 comparison of array-based and linked queues
4. 4 exercises
4. 5 projects
chapter 5 binary trees
5. 1 definitions and properties
5. 1. 1 the full binary tree theorem
5. 1. 2 a binary tree node adt
5. 2 binary tree traversals
5. 3 binary tree implementations
5. 3. 1 pointer-based node implementations
5. 3. 2 space requirements
5. 3. 3 array implementation for complete binary trees
5. 4 huffman coding trees
5. 4. 1 building huffman coding trees
5. 4. 2 assigning and using huffman codes
5. 5 binary search trees
5. 6 heaps and priority queues
5. 7 further reading
5. 8 exercises
5. 9 projects
chapter 6 general trees
6. 1 general tree definitions and terminology
6. 1. 1 an adt for general tree nodes
6. 1. 2 general tree traversals
6. 2 the parent pointer implementation
6. 3 general tree implementations
6. 3. 1 list of children
6. 3. 2 the left child/right sibling implementation
6. 3. 3 dynamic node implementations
6. 3. 4 dynamic "left child/right sibling" implementation
6. 4 k-ary trees
6. 5 sequential tree implementations
6. 6 further reading
6. 7 exercises
6. 8 projects
chapter 7 graphs
7. 1 terminology and representations
7. 2 graph implementations
7. 3 graph traversals
7. 3. 1 depth-first search
7. 3. 2 breadth-first search
7. 3. 3 topological sort
7. 4 shortest-paths problems
7. 4. 1 single-source shortest paths
7. 4. 2 all-pairs shortest paths
7. 5 minimum-cost spanning trees
7. 5. 1 prim's algorithm
7. 5. 2 kruskal's algorithm
7. 6 further reading
7. 7 exercises
7. 8 projects
part iii sorting and searching
chapter 8 internal sorting
8. 1 sorting terminology and notation
8. 2 three sorting algorithms
8. 2. 1 insertion sort
8. 2. 2 bubble sort
8. 2. 3 selection sort
8. 2. 4 the cost of exchange sorting
8. 3 shellsort
8. 4 quicksort
8. 5 mergesort
8. 6 heapsort
8. 7 binsort and radix sort
8. 8 an empirical comparison of sorting algorithms
8. 9 lower bounds for sorting
8. 10 further reading
8. 11 exereises
8. 12 projects
chapter 9 file processing and external sorting
9. 1 primary versus secondary storage
9. 2 disk and tape drives
9. 2. 1 disk access costs
9. 2. 2 magnetic tape
9. 3 buffers and buffer pools
9. 4 the programmer's view of files
9. 5 external sorting
9. 6 simple approaches to external sorting
9. 7 replacement selection
9. 8 multiway merging,
9. 9 further reading
9. 10 exercises
9. 11 projects
chapter 10 searching
10. 1 searching sorted arrays
10. 2 self-organizing lists
10. 3 searching in sets
10. 4 hashing
10. 4. 1 hash functions
10. 4. 2 open hashing
10. 4. 3 closed hashing
10. 5 further reading
10. 6 exercises
10. 7 projects
chapter 11 indexing
11. 1 linear indexing
11. 2 isam
11. 3 tree indexing
11. 4 2-3 trees
11. 5 b-trees
11. 5. 1 b+-trees
11. 5. 2 b-tree analysis
11. 6 further reading
11. 7 exercises
11. 8 proects
part iv applications and advanced topics
chapter 12 lists and arrays revisited
12. 1 skip lists
12. 2 multilists
12. 3 matrix representations
12. 4 memory management
12. 4. 1 dynamic storage allocation
12. 4. 2 failure policies and garbage collection
12. 5 further reading
12. 6 exercises
12. 7 projects
chapter 13 advanced tree structures
13. 1 tries
13. 2 splay trees
13. 3 spatial data structures
13. 3. 1 the k-d tree
13. 3. 2 the pr quadtree
13. 3. 3 other spatial data structures
13. 4 further reading
13. 5 exercises
13. 6 projects
chapter 14 analysis techniques
14. 1 summation techniques
14. 2 recurrence relations
14. 2. 1 estimating upper and lower bounds
14. 2. 2 expanding recurrences
14. 2. 3 divide and conquer recurrences
14. 2. 4 average-case analysis of quicksort
14. 3 amortized analysis
14. 4 further reading
14. 5 exercises
14. 6 projects
chapter 15 limits to computation
15. 1 introduction
15. 2 reductions
15. 3 hard problems
15. 3. 1 np-completeness
15. 3. 2 getting around np-complete problems
15. 4 impossible problems
15. 4. 1 uncountability
15. 4. 2 the halting problem is unsolvable
15. 4. 3 determining program behavior is unsolvable
15. 5 further reading
15. 6 exercises
15. 7 projects
part v appendix
appendix a java tutorial for c and pascal programmers
a. 1 example 1: interface for lists
a. 2 example 2: array-based list implementation
a. 3 example 3: linked list implementation
bibliography
A Practical Introduction to Data Structures and Algorithm Analysis:Java Edition
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×