数据结构与算法分析C语言英文版
- 格式:pptx
- 大小:598.19 KB
- 文档页数:26
高级数据结构和算法分析Advanced Data Structures and Algorithm Analysis主讲教师:陈越Instructor: CHEN, YUEE-mail: chenyue@ Courseware and homework sets can be downloaded from /dsaa/教材(Text Book)Data Structures andAlgorithm Analysis in C(2nd Edition)Mark Allen Weiss陈越改编Email: weiss@参考书目(Reference)数据结构与算法分析(C语言版)魏宝刚、陈越、王申康编著浙江大学出版社 Data Structures, Algorithms, and Applications in C++数据结构算法与应用——C++语言描述(英文版)Sartaj Sahni McGraw-Hill & 机械工业出版社 数据结构课程设计何钦铭、冯雁、陈越著浙江大学出版社课程评分方法(Grading Policies)Research Project (23 or 25)Discussions(14)Homework (5)Q&A (0.5 each)Total 45Final Exam (55)Discussions(14)Form groups of 3 or 428 in-class discussion topicsEach takes 3~5 minutes14 = 28 10 / 20Research topics (23 or 25)◆Done in groups◆16 topics to choose from◆Report (18 or 20 points)◆In-class presentation (5~10 minutes, 5 points)◆The speaker will be chosen randomly from all thecontributors◆If there are many volunteers, only one group willbe chosen◆If there is no volunteer, I will talk about itHomework (5)✓Done independently✓10 problems✓Collected before the end of the next class meeting ✓ 5 = 10 10 / 20✓Late penalty: 2 points/weekQ&A⏹For volunteers only⏹0.5 point for each question asked/answered ⏹come and claim your credits after each classsession。
数据结构与算法经典书籍数据结构与算法是计算机科学中非常重要的基础知识,对于程序员来说,掌握好数据结构与算法对于解决问题、编写高效的代码至关重要。
下面是一些经典的数据结构与算法的书籍,这些书籍涵盖了常见的数据结构和算法,可以帮助读者深入理解和应用这些知识。
1.《算法导论》(Introduction to Algorithms)这是一本经典的算法教材,由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein合著,被广泛认为是学习算法的权威之作。
书中详细介绍了各种常用的数据结构和算法,包括排序、查找、图算法等。
2.《数据结构与算法分析:C语言描述》(Data Structures and Algorithm Analysis in C)这本书由Mark Allen Weiss编写,通过C语言的描述介绍了各种数据结构和算法。
书中详细讲解了链表、栈、队列、树等数据结构以及排序、查找、图算法等算法。
3.《算法图解》(Grokking Algorithms)这是一本非常适合初学者的算法入门书籍,由Aditya Bhargava编写。
书中使用简洁的语言和图示,介绍了常见的算法和数据结构,包括二分查找、快速排序、广度优先搜索等。
4.《算法(第4版)》(Algorithms, 4th Edition)这本书由Robert Sedgewick和Kevin Wayne合著,是一本经典的算法教材。
书中介绍了各种算法和数据结构的设计和分析方法,包括排序、查找、图算法等。
5.《数据结构与算法分析:Java语言描述》(Data Structures and Algorithm Analysis in Java)这本书由Mark Allen Weiss编写,使用Java语言描述了各种数据结构和算法。
书中详细讲解了链表、栈、队列、树等数据结构以及排序、查找、图算法等算法。
Data Structures and Algorithm Analysis in C++ SecondEdition–Course DesignIntroductionThis course design is based on the book Data Structures andAlgorithm Analysis in C++ by Mark A. Weiss, the second edition. The purpose of this course is to enhance the students’ understanding of data structures and algorithms as well as improve their programming skills in C++. The contents of this course are divided into two parts, theoretical knowledge, and practical programming applications.Theoretical KnowledgeChapter 1 Basic ConceptsIn this chapter, students will learn the basic concepts of data structures and algorithms, including their definitions, characteristics, and applications. In addition, students will be guided to understand the relationships among data structures, algorithms, and programming languages.Chapter 2 Algorithm AnalysisIn this chapter, students will learn how to analyze the efficiencyof algorithms. They will be introduced to the concept of big-o notation, which is a standard measure of how an algorithm performs. They will be able to classify algorithms based on their time and space complexities. They will also be able to compare and contrast different algorithms based on their efficiency.Chapter 3 Lists, Stacks, and QueuesIn this chapter, students will learn about linear data structures such as lists, stacks, and queues. They will be able to describe the features of these data structures and their implementation in C++. They will also learn to analyze the performance of operations such as insertion, deletion, and search.Chapter 4 TreesIn this chapter, students will learn about the hierarchical data structure - trees. They will be able to identify the different types of trees, understand their features, and implement them in C++. Studentswill also learn about tree traversal algorithms and the balance ofbinary trees.Chapter 5 HashingIn this chapter, students will learn about the implementation ofhash tables in C++. They will be introduced to hash function design, collision resolution, and probing methods. They will understand the performance analysis of different hash table implementations.Chapter 6 Priority Queues (Heaps)In this chapter, students will learn about priority queues and will explore the various implementation methods, including heap structures. They will understand the relationship between binary heaps and priority queues. They will be able to describe and implement heap-sort algorithms.Chapter 7 SortingIn this chapter, students will learn about various sorting algorithms, including insertion, merge, quick, and radix sorts. Students will be able to describe their features and analyze their efficiency. They will also learn the key steps required for implementation.Chapter 8 The Disjoint Set ADTIn this chapter, students will be introduced to the disjoint-setdata structure. They will learn about classical algorithms, including Kruskal’s algorithm, for solving the minimum spanning tree problem.Practical Programming ApplicationsAlgorithm VisualizationThis part ms to help students improve their programming skills. Students will be trned to design and implement visualization tools that demonstrate various algorithms such as sorting and pathfinding. Theywill use C++ programming language and third-party graphics libraries.Data Structure DesignIn this part, students will be divided into groups of two or threeto design and implement their own data structure. They will be required to submit design documents and technical reports. After implementation, they are expected to demonstrate their data structures and present their work in class.Project Design and ImplementationThis part ms to help students integrate all the knowledge and skills they have learned so far. Students will be required to complete a project related to data structures and algorithms. They will need to identify the problem, design the solution, and implement the algorithm using C++. The project can be either a standalone application or a library.ConclusionBy the end of the course, students will have an in-depth understanding of various data structures and algorithms. They will have learned to analyze their efficiency and implement them using C++. They will also have completed two programming projects and developed marketable programming skills.。