Giới thiệu thực tiễn về cấu trúc dữ liệu và phân tích thuật toán - Phiên bản 3.2 C

Trường đại học

Virginia Tech

Chuyên ngành

Computer Science

Người đăng

Ẩn danh

Thể loại

thesis

2013

247
1
0

Phí lưu trữ

40 Point

Mục lục chi tiết

Preface

1. Data Structures and Algorithms

1.1. A Philosophy of Data Structures

1.1.1. The Need for Data Structures

1.2. Costs and Benefits

1.3. Abstract Data Types and Data Structures

1.4. Problems, Algorithms, and Programs

1.5. Exercises

2. Mathematical Preliminaries

2.1. Sets and Relations

2.2. Proof by Contradiction

2.3. Proof by Mathematical Induction

2.4. Summations and Recurrences

2.5. Exercises

3. Algorithm Analysis

3.1. Best, Worst, and Average Cases

3.2. A Faster Computer, or a Faster Algorithm?

3.3. Calculating the Running Time for a Program

3.4. Speeding Up Your Programs

3.5. Projects

4. Lists, Stacks, and Queues

4.1. Array-Based List Implementation

4.2. Comparison of List Implementations

4.3. Doubly Linked Lists

4.4. Array-Based Stacks

4.5. Comparison of Array-Based and Linked Stacks

4.6. Array-Based Queues

4.7. Comparison of Array-Based and Linked Queues

4.8. Projects

5. Binary Trees

5.1. Definitions and Properties

5.2. The Full Binary Tree Theorem

5.3. A Binary Tree Node ADT

5.4. Binary Tree Traversals

5.5. Binary Tree Node Implementations

5.6. Pointer-Based Node Implementations

5.7. Array Implementation for Complete Binary Trees

5.8. Binary Search Trees

5.9. Heaps and Priority Queues

5.10. Huffman Coding Trees

5.10.1. Building Huffman Coding Trees

5.10.2. Assigning and Using Huffman Codes

5.10.3. Search in Huffman Trees

5.11. Projects

6. Non-Binary Trees

6.1. General Tree Definitions and Terminology

6.2. An ADT for General Tree Nodes

6.3. General Tree Traversals

6.4. The Parent Pointer Implementation

6.5. General Tree Implementations

6.5.1. List of Children

6.5.2. The Left-Child/Right-Sibling Implementation

6.5.3. Dynamic Node Implementations

6.5.4. Dynamic “Left-Child/Right-Sibling” Implementation

6.5.5. Sequential Tree Implementations

6.6. Projects

7. Internal Sorting

7.1. Sorting Terminology and Notation

7.2. Three Θ(n2 ) Sorting Algorithms

7.3. The Cost of Exchange Sorting

7.4. Binsort and Radix Sort

7.5. An Empirical Comparison of Sorting Algorithms

7.6. Lower Bounds for Sorting

7.7. Projects

8. File Processing and External Sorting

8.1. Primary versus Secondary Storage

8.2. Disk Drive Architecture

8.3. Disk Access Costs

8.4. Buffers and Buffer Pools

8.5. The Programmer’s View of Files

8.6. Simple Approaches to External Sorting

9. Searching

9.1. Searching Unsorted and Sorted Arrays

9.2. Self-Organizing Lists

9.3. Bit Vectors for Representing Sets

9.4. Analysis of Closed Hashing

9.5. Tree-based Indexing

10. B+ -Trees

10.1. B+ -Trees

10.2. Projects

11. Graphs

11.1. Terminology and Representations

11.2. Depth-First Search

11.3. Breadth-First Search

11.4. Shortest-Paths Problems

11.4.1. Single-Source Shortest Paths

11.5. Minimum-Cost Spanning Trees

11.6. Projects

12. Lists and Arrays Revisited

12.1. Dynamic Storage Allocation

12.2. Failure Policies and Garbage Collection

12.3. Projects

13. Advanced Tree Structures

13.1. Tries

13.2. The AVL Tree

13.3. The Splay Tree

13.4. Spatial Data Structures

13.4.1. The PR quadtree

13.4.2. Other Point Data Structures

13.4.3. Other Spatial Data Structures

13.5. Projects

14. Analysis Techniques

14.1. Estimating Upper and Lower Bounds

14.2. Divide and Conquer Recurrences

14.3. Average-Case Analysis of Quicksort

14.4. Projects

15. Lower Bounds

15.1. Introduction to Lower Bounds Proofs

15.2. Lower Bounds on Searching Lists

15.2.1. Searching in Unsorted Lists

15.2.2. Searching in Sorted Lists

15.3. Finding the Maximum Value

15.4. Adversarial Lower Bounds Proofs

15.5. State Space Lower Bounds Proofs

15.6. Finding the ith Best Element

15.7. Projects

16. Patterns of Algorithms

16.1. The Knapsack Problem

16.2. All-Pairs Shortest Paths

16.3. Randomized algorithms for finding large values

16.4. Largest Common Factor

16.5. The Fast Fourier Transform

16.6. Projects

17. Limits to Computation

17.1. The Theory of N P-Completeness

17.2. The Halting Problem Is Unsolvable

17.3. Coping with N P-Complete Problems

17.4. Projects

Utility Functions

Bibliography

Index

A practical introduction to data structures and algorithm analysis edition 3 2 c version part 1

Tài liệu "Giới thiệu thực tiễn về cấu trúc dữ liệu và phân tích thuật toán - Phiên bản 3.2 C" cung cấp một cái nhìn tổng quan về các khái niệm cơ bản trong cấu trúc dữ liệu và phân tích thuật toán, giúp người đọc nắm bắt được các nguyên lý quan trọng trong lập trình và phát triển phần mềm. Tài liệu này không chỉ giải thích các cấu trúc dữ liệu phổ biến như danh sách, ngăn xếp, hàng đợi, và cây, mà còn phân tích hiệu suất của các thuật toán liên quan, từ đó giúp người đọc hiểu rõ hơn về cách tối ưu hóa mã nguồn.

Để mở rộng kiến thức của bạn, bạn có thể tham khảo tài liệu Giáo trình cấu trúc dữ liệu và giải thuật ngành nghề công nghệ thông tin trình độ cao đẳng, nơi cung cấp cái nhìn sâu hơn về ứng dụng của cấu trúc dữ liệu trong ngành công nghệ thông tin. Ngoài ra, tài liệu Giáo trình cấu trúc dữ liệu và giải thuật nhiều tác giả sẽ giúp bạn tiếp cận với nhiều quan điểm khác nhau từ các chuyên gia trong lĩnh vực này. Cuối cùng, bạn cũng có thể tìm hiểu thêm qua tài liệu Giáo trình cấu trúc dữ liệu và thuật toán tái bản phần 1, nơi cung cấp kiến thức nền tảng vững chắc về cấu trúc dữ liệu và thuật toán.

Những tài liệu này không chỉ giúp bạn củng cố kiến thức mà còn mở ra nhiều cơ hội để khám phá sâu hơn về lĩnh vực này.