《妙趣横生的算法(C++语言实现)》内容丰富,生动有趣,寓教于乐,旨在帮助读者学习数据结构和算法的相关知识,从而开阔眼界,培养编程兴趣,提高编程能力,增强求职的竞争力。如果您想提高自己对算法和数据结构的理解能力,在程序设计之路上走得更远,那么请翻开《妙趣横生的算法(C++语言实现)》,仔细研读吧,它将助您一臂之力。
《妙趣横生的算法(C++语言实现)》以通俗易懂的语言深入浅出地介绍了常用的数据结构和算法知识。在讲解算法理论时,结合实际编程环境,配合精选的例题,利用C++语言将算法理论转换为代码,以加深读者对各种算法的特点和难点的理解,并能更好地掌握算法的应用。另外,作者为书中的重点内容录制了高清教学视频,便于读者高效、直观地学习。
《妙趣横生的算法(C++语言实现)》共12章,分为4篇。第1篇是基础知识篇,主要介绍常用的数据结构。第2篇是基础算法篇,主要介绍算法的一些基础理论和常用的经典基础算法,包含算法的数学基础、排序算法、查找算法等。第3篇是高级算法篇,主要介绍难度较高的一些算法,包括高级图算法、动态规划、贪心算法等。其中,高级图算法是重点,用途很广,是在第3章图结构的基础上深入分析图结构在工程应用中的作用和常用算法思想,包括拓扑排序和最小生成树等。第4篇是算法实战篇,以实例分析为主,包含大量的数学应用方面的算法题和面试中常见的算法题。本篇是对本书算法理论知识的总结和实践,有较高的实用性。
《妙趣横生的算法(C++语言实现)》特别适合算法入门人员和爱好者阅读,也适合有一定C++编程基础的人员作为进阶读物。另外,本书还适合相关院校作为教材使用。对于参加IT企业面试的程序员和各种程序设计选拔赛及信息学竞赛的参赛者,本书也是一本很好的参考读物。
6小时教学视频、96个趣味算法题、37个算法面试题,内容丰富,浅显易懂!
帮您了解算法,开阔眼界,培养编程兴趣,提高编程能力,增强求职的竞争力!
注重对基础算法理论和数据结构的阐述,以夯实基础
讲解通俗易懂,并力求总结出解决各种问题的一般规律
学习梯度科学,既适合入门,也适合进一步提高和研究
基本做到了每一节都有实例,每一种算法都有实例
选取的算法例题有较强的趣味性,可极大地提高读者的兴趣
实例流程图规范,程序注释详尽,并通过了测试,可以运行
实例用C++实现,既可以验证算法理论,还可加提高C++编程水平
著名的计算机科学家沃斯(Nikiklaus Wirth)将程序设计形象地通过一个公式总结为“程序=数据结构+算法”。这一公式揭示了程序设计的本质,成为了人们进行程序设计的“黄金定律”。
要想成为一名真正专业的程序员,基本的数据结构基础和常用的算法知识是必须要掌握的。脱离了这两点,其编写出来的程序一定不是健壮的好程序。然而仅仅单纯地掌握一些数据结构基础和常用算法知识也是远远不够的。空洞地掌握所谓的数据结构和算法等理论知识只是纸上谈兵,这些知识必须要依托于程序设计语言才能具有真正的生命力,才能够转化为真实的程序代码,才能够真正地解决实际问题。
本书便是结合C++语言介绍了日常编程实践中常用的数据结构和算法知识,并结合实际给出了大量的编程实例,做到了理论结合实践,让读者在学习算法理论的同时,可以得到C++编程方面的锻炼,从而提高自己的编程实践能力。
本书对每种数据结构和每种算法都秉承先进行概念介绍然后介绍理论,最后进行实例分析的步骤进行。这种循序渐进的方式更能使读者融入算法的世界中,更容易理解书中介绍的算法理论。书中每个实例都经过了实际的编译运行,保证了代码的质量。在介绍每个独立的趣味实例时,将涉及的C++语言中的知识点也都详尽地进行了解说,使读者在解读程序的同时能够对C++语言的常用语法做到融会贯通,牢固掌握。
本书特别适合有一定C++语言基础的读者学习和掌握算法时阅读。为了帮助读者更好、更快、更直观地学习,笔者专门为书中的重点内容录制了高清配套教学视频。这些视频和本书涉及的源程序及其他学习资料一起收录于配书光盘中。
本书特色
1.注重基础,循序渐进
本书在介绍算法知识时,注重由浅入深的渐进学习方式,注重对基础算法和数据结构的阐述,以夯实基础。在讲解算法实例时,对一些重要的C++语言基础知识点也进行了讲解,这样让读者的算法设计能力和实际编程能力可以同步提高。
2.实例丰富,生动有趣
本书以通俗易懂的语言,深入细致地介绍了使用C++语言编写的多个算法实例,基本做到了每节都有实例,每种算法都有实例。在介绍实例的同时,将程序开发的基本原理、基本方法和基本技术融入其中。另外,本书选取的算法例题大多都有较强的趣味性,可以极大地提高读者的学习兴趣,让读者体会到算法学习和程序设计的乐趣。
3.讲解透彻,注释详尽
本书按照不同类型的趣味问题进行了分类,力求将每一类问题都讲解透彻并总结出解决该类问题的通用和一般的规律。书中的算法实例代码注释详尽,流程图规范,所有的示例均通过测试可以运行,对读者有很好的参考价值。
4.视频教学,高效直观
本书中的重点内容和实例提供了配套教学视频辅助讲解。读者可以先阅读书中的内容讲解,然后再结合教学视频进行学习,可以获得更加高效而直观的学习效果。
本书主要内容
本书共12章,分为4篇,主要内容介绍如下。
第1篇 基础知识篇(第1~3章)
第1章 基础数据结构,介绍了常用数据结构的理论和应用,为算法学习打下基础。
第2章 树结构,介绍了一种非线性数据结构,并用C++将其模型表达出来。
第3章 图结构,介绍了图结构的基础知识。
第2篇 基础算法篇(第4~6章)
第4章 算法入门,介绍了算法的各种概念和基本思想,为进一步学习打下基础。
第5章 排序算法,介绍了编程常用的几种排序算法,并引用了有趣的实例加深读者对排序算法的理解。
第6章 查找算法,介绍了常用查找算法的理论和应用,包括折半查找和B树查找等。
第3篇 高级算法篇(第7~10章)
第7章 高级图算法是对第3章图结构的一个升华。本章在图结构的基础上详细探讨了包括拓扑排序、最短路径在内等较难懂却又很实用的图算法。
第8章 动态规划,介绍了动态规划算法思想的原理,并引用了大量有趣的实例加以练习,让读者在实践中体会动态规划算法的设计和实现方法。
第9章 贪心算法,深入地介绍了贪心算法的理论、特点和具体应用。
第10章 综合趣味算法,通过深入浅出的语言,详细介绍了与数学应用有关的几种算法,让读者体会到用算法思想看待数学问题的乐趣。
第4篇 算法实战篇(第11章和第12章)
第11章 数学趣题解决算法,通过大量趣味横生的问题和实例,引导读者学会用算法思想看待这些生活难题,并设计出合适的算法加以解决。
第12章 面试算法题精粹,通过对精选的数十道名企面试题的详细分析,教会读者如何从算法的视角去看待和解决这些问题,并设计出可行的解决方案。
本书配套资源获取方式
本书涉及的源程序及教学视频等配套资源需要读者自行下载。请登录清华大学出版社的网站(www.tup.com.cm),搜索到本书页面,按提示下载即可,也可在本书技术论坛上(www.wanjuanchina.net)的相关版式下载。
本书读者对象
* 算法入门人员;
* 算法爱好者;
* 需要提高C++编程水平的人员;
* IT企业面试人员;
* 信息学竞赛的参赛人员;
* 各种程序设计选拔赛参赛人员;
* 大中专院校的学生。
本书作者
本书由胡浩主笔编写。其他参与编写的人员有韩先锋、何艳芬、李荣亮、刘德环、孙姗姗、王晓燕、杨平、杨艳艳、袁玉健、张锐、张翔、陈明、邓睿、巩民顺、吉燕、水淼、宗志勇、安静、曹方、曾苗苗、陈超。
如果您在阅读本书的过程中有任何疑问,请发E-mail到bookservice2008@163.com以获得帮助。
编者
胡浩,网络工程师。从事软件开发工作多年,在数据挖掘领域有较深的研究。精通算法设计,擅长数据挖掘算法。擅长C++和Java程序设计。曾经主持和参与了多个大型项目的开发,积累了丰富的开发经验。
第1篇 基础知识篇
第1章 基础数据结构(教学视频:26分钟)
1.1 顺序表
1.1.1 顺序表的定义
1.1.2 顺序表的基本操作
1.1.3 实例应用与分析
1.2 链表
1.2.1 链表的定义
1.2.2 链表基本操作
1.2.3 双向链表
1.2.4 循环链表
1.2.5 实例应用与分析
1.3 栈
1.3.1 栈的定义
1.3.2 栈的基本操作
1.3.3 实例应用与分析
1.4 队列
1.4.1 队列的定义
1.4.2 队列的基本操作
1.4.3 实例应用与分析
1.5 散列表
1.5.1 散列表的定义
1.5.2 散列函数
1.5.3 基于散列的查找
1.5.4 实例应用与分析
第2章 树结构(教学视频:43分钟)
2.1 树结构简介
2.1.1 树的定义
2.1.2 树的逻辑表示
2.1.3 基本术语
2.1.4 树的性质
2.1.5 树的基本操作
2.1.6 树与森林
2.1.7 实例应用与分析
2.2 二叉树
2.2.1 二叉树的定义
2.2.2 二叉树的性质
2.2.3 二叉树的存储结构
2.2.4 二叉树的基本操作
2.2.5 实例应用与分析
2.3 线索二叉树
2.3.1 线索二叉树的定义
2.3.2 线索二叉树的基本操作
2.4 二叉查找树
2.4.1 二叉查找树的定义
2.4.2 二叉查找树的基本操作
2.4.3 实例应用与分析
2.5 红黑树
2.5.1 红黑树的定义
2.5.2 红黑树的基本操作
2.6 B树
2.6.1 B树的定义
2.6.2 B树的基本操作
第3章 图结构(教学视频:34分钟)
3.1 图结构简介
3.2 图的存储结构
3.2.1 邻接矩阵存储
3.2.2 邻接表存储
3.3 图的基本操作和图的遍历
3.3.1 图的基本操作
3.3.2 深度优先遍历
3.3.3 广度优先遍历
3.3.4 实例应用与分析
第2篇 基础算法篇
第4章 算法入门(教学视频:30分钟)
4.1 什么是算法
4.2 算法的数学基础
4.2.1 算法分析
4.2.2 函数增长率
……
第3篇 高级算法篇
第4篇 算法实战篇