





定价:59元
印次:1-1
ISBN:9787302685241
出版日期:2025.04.01
印刷日期:2025.04.03
图书责编:张瑞庆
图书分类:教材
"本书内容全面、细致、通俗易懂,涵盖线性表、栈和队列、树和二叉树、堆、哈夫曼树、并查集、AVL树、红黑树、B树和B+树、串、图、散列表等数据结构,以及递归、分治、深搜、广搜、最短路、最小生成树、拓扑排序、关键路径、内外排序等算法。 对各类数据结构和算法,不但要掌握理论,还应熟练地编程实现。本书的**特点是高标准的实践性。除了少数几个特别复杂的数据结构,95%的数据结构和算法都给出了完整可运行的代码,一共100多份,并且这些代码几乎都出现在具体的例题中。 本书的例题和编程习题,都可以在北京大学在线程序评测平台OpenJudge上提交解题程序并自动评判对错。 本书内容和习题按难度做了明确分级,因此不论是计算机专业还是非计算机专业的师生,都可以从中各取所需用于教学。本书既可以用作高等学校数据结构和算法的入门教材,也可以作为考研、找工作面试的秘籍,还可以用于程序设计竞赛的基础培训。 "
郭炜,北京大学信息科学技术学院教师。曾担任北京大学ACM大学生程序设计竞赛队教练10年。在中国大学MOOC独立开设的《程序设计与算法》系列课程获评国家精品在线开放课程。在华文慕课和另一教师合开的《程序设计实习》获评国家精品在线开放课程。编著有《新标准C++程序设计》、 《Python程序设计基础及实践(慕课版)》、《新标准C++程序设计》、 《Python程序设计基础及实践(慕课版)》、《算法基础与在线实践》、《ACM国际大学生程序设计竞赛亚洲区预选赛真题题解》 等教材。
前言 目前,程序设计课程在中学已经较为普及,在许多大学更是理科生的必修课。社会上的编程培训班也十分流行。许多没有经过系统的计算机专业学习的学生,经过培训后掌握一两门语言,学会一些前端或后端应用的开发技能,虽然理论基础薄弱,也能求得一份程序员的职位。 然而,要成为一个优秀的程序员,有一门课是没有捷径可以绕过去的,那就是“数据结构”。优秀的公司是不会放心将重要的任务交给不懂数据结构和算法的程序员的,因为那些程序员没有效率的观念,一不小心就可能写出肆意挥霍计算资源的程序,让公司付出真金白银的代价。例如,低效的后端导致公司需要购买更多的服务器才能提供服务,甚至导致系统在访问量高时崩溃。如果有程序员信誓旦旦地说他的工作不需要用到数据结构和算法,那多半是因为他的水平不足以使他接触到需要数据结构和算法的任务。 总之,计算机专业的学习者需要掌握好数据结构与算法自不必说,非计算机专业的人士,不论是打算转行,还是已经转行做了程序员,都应该学好这门课。即便不做程序员,如果经常需要用编程来解决工作中的问题,学习这门课也是大有裨益的。因此,北京大学将“数据结构与算法”设置为所有理科生的必修课。 作者在北京大学讲授“数据结构与算法”“数据结构与算法实习”课程多年,并曾担任北京大学ACM国际大学生程序设计竞赛队教练9年。作者讲授的这些课程,既有面向高校非计算机专业的,也有面向计算机专业的。本书即是对这些课程教学经验的归纳与整合。 同类课程或教材,有些名为“数据结构”,有些名为 “数据结构与算法”,它们在内容上和本书并无很大区别。实际上,数据结构和算法,没有必要也无法严格区分,两者是你中有我...
第1章绪论1
1.1算法和算法分析1
1.1.1什么是算法1
1.1.2算法的时间复杂度及其表示法3
1.2数据结构6
1.2.1数据的逻辑结构6
1.2.2数据的存储结构7
1.2.3数据结构上的操作7
小结8
习题8
第2章Java语言巩固与提高10
2.1接口和多态10
2.2内部类和内部接口12
2.3匿名类、Lambda表达式和函数式接口13
2.4泛型16
2.4.1泛型的概念和作用16
2.4.2泛型类、泛型接口和泛型函数17
2.4.3泛型数组22
2.5迭代器22
第3章线性表25
3.1顺序表25
3.1.1顺序表的概念和操作25
3.1.2Java中的顺序表28
3.2链表28
3.2.1单链表29
3.2.2循环单链表32
3.2.3双链表33
3.2.4静态链表36
★★3.2.5Java中的链表37
3.3顺序表和链表的选择39
小结40
习题40
第4章数组和矩阵42
4.1数组42
4.2特殊矩阵的压缩存储45
4.3小结47
4.4习题47
第5章递归和分治49
5.1用递归进行枚举50
5.1.1案例: N皇后问题(P0230)50
5.1.2案例: 全排列(P0240)52
5.2解决用递归形式定义的问题54
5.2.1案例: 波兰表达式(P0250)55
★★5.2.2案例: 绘制雪花曲线56
5.3用递归进行问题分解58
5.3.1案例: 上台阶(P0260)58
5.3.2案例: 数字三角形(P0265)60
5.3.3案例:...
本书的例题和编程习题,都可以在北京大学在线程序评测平台openjudge上提交解题程序并自动评判对错。
本书内容和习题按难度做了明确分级,因此不论计算机专业、还是非计算机专业的师生,都可以从中各取所需用于教学。既可以作为数据结构和算法入门教材,又可以作为考研、找工作面试的提高秘籍。"