分支限界算法c语言_打开算法和数据结构的两扇门,这样程序的灵魂和骨架就都有了...

b08a186656cccdfeff23fd755ec6a9ca.png

瑞士著名的科学家N.Wirth教授曾提出:数据结构+算法=程序。数据结构是程序的骨架,算法是程序的灵魂。当我们遇到一个实际问题时,首先需要解决两件事:

(1)如何将数据存储在计算机中;

(2)用什么方法和策略解决问题。

前者是数据结构,后者是算法。只有数据结构没有算法,相当于只把数据存储到计算机中,而没有有效的方法去处理,就像一幢只有框架的烂尾楼;若只有算法,没有数据结构,就像沙漠里的海市蜃楼,只不过是空中楼阁罢了。

数据是一切能输入计算机中的信息的总和,结构是指数据之间的关系。数据结构就是将数据及其之间的关系有效地存储在计算机中并进行基本操作。算法是对特定问题求解步骤的一种描述,通俗讲就是解决问题的方法和策略。

在遇到一个实际问题时,要充分利用自己所学的数据结构,将数据及其之间的关系有效地存储在计算机中,然后选择合适的算法策略,并用程序高效地实现。这就是Niklaus Wirth教授所说的:“数据结构+算法=程序”。

如何打开数据结构和算法的这两扇门呢?推荐给大家入门的两本书。《趣学数据结构》和《趣学算法》。两本书都是作者陈小玉著。

1、趣学数据结构

693acdaf4d0e9828c3bcc5d15cd2d163.png
《趣学数据结构》(陈小玉)【摘要 书评 试读】- 京东图书​item.jd.com
fc65acb34e3fe05d77bee721d546d2bb.png

适读人群 :本书可作为程序员的学习用书,也适合没有太多编程经验但又对数据结构有强烈兴趣的初学者使用,同时也可作为高等院校计算机、数学及相关专业的师生用书,或学科竞赛的辅导用书和培训学校的教材。

推荐这本书的三大理由:

(1)完美图解+丰富实例,复杂问题简单化

为基本操作配以图解,用数据结构解决生活中的实际问题,学习过程更加轻松有趣。

(2)原理分析+实战演练,真正地学以致用

通俗化讲解基础知识,在实战中体会数据结构的设计和操作,锻炼独立思考的能力。

(3)配套代码+在线答疑,为学习保驾护航

提供书中的范例程序源代码、练习题以及答案解析,并在博客和QQ群中答疑解惑。

内容简介

本书基于C++语言编写,从趣味故事引入算法复杂性计算及数据结构基础内容,涵盖线性结构、树形结构和图形结构,包括链表、栈和队列、树和图的应用等。本书内容还涉及数据结构的基本应用(包括各种查找、排序等)和高级应用(包括优先队列、并查集、B-树、B+树和红黑树等)。通过大量图解将抽象数据模型简单通俗化,语言表述浅显易懂,并结合有趣的实例帮助读者轻松掌握数据结构。

目录结构

  • 第 1章 数据结构入门 1
  • 第2章 线性表 24
  • 第3章 栈和队列 78
  • 第4章 字符串 121
  • 第5章 数组与广义表 139
  • 第6章 树 158
  • 第7章 图 241
  • 第8章 查找 327
  • 第9章 排序 379
  • 第10章 高级数据结构 425

2、趣学算法

6cbeb9a2479b7cf0fa6574b706d2eecf.png
《趣学算法》(陈小玉)【摘要 书评 试读】- 京东图书​item.jd.com
53bfe76766490ee698627208a3e58178.png

选择这本书的六大理由:

(1)实例丰富,通俗易懂。从有趣的故事引入算法,从简单到复杂,使读者从实例中体会算法设计思想。实例讲解通俗易懂,让读者获得最大程度的启发,锻炼分析问题和解决问题的能力。

(2)完美图解,简单有趣。结合大量完美绘图,对算法进行分解剖析,使复杂难懂的问题变得简单有趣,给读者带来巨大的阅读乐趣,使读者在阅读中不知不觉地学到算法知识,体会算法的本质。

(3)深入浅出,透析本质。采用伪代码描述算法,既简洁易懂,又能抓住本质,算法思想描述及注释使代码更加通俗易懂。对算法设计初衷和算法复杂性的分析全面细致,既有逐步得出结论的推导过程,又有直观的绘图展示。

(4)实战演练,循序渐进。每一个算法讲解清楚后,进行实战演练,使读者在实战中体会算法,增强自信,从而提高读者独立思考和动手实践的能力。丰富的练习题和思考题用于及时检验读者对所学知识掌的握情况,为读者从小问题出发到逐步解决大型复杂性问题奠定了基础。

(5)算法解析,优化拓展。每一个实例都进行了详细的算法解析,分析算法的时间复杂度和空间复杂度,并对其优化拓展进一步讨论,提出了改进算法,并进行伪码讲解和实战演练,最后分析优化算法的复杂度进行对比。使读者在学习算法的基础上更上一个阶梯,对算法优化有更清晰的认识。

(6)网络资源,技术支持。网络提供本书所有范例程序的源代码、练习题以及答案解析,这些源代码可以自由修改编译,以符合读者的需要。本书提供源代码执行、调试说明书,对读者存在的问题提供技术支持。

内容简介:

这是一本初中生也能看得懂的算法入门书。本书内容按照算法策略分为7章。

第1章从算法之美、简单小问题、趣味故事引入算法概念、时间复杂度、空间复杂度的概念和计算方法,以及算法设计的爆炸性增量问题,使读者体验算法的奥妙。

第2~7章介绍经典算法的设计策略、实战演练、算法分析及优化拓展,分别讲解贪心算法、分治算法、动态规划、回溯法、分支限界法、线性规划和网络流。每一种算法都有4~10个实例,共50个大型实例,包括经典的构造实例和实际应用实例,按照问题分析、算法设计、完美图解、伪代码详解、实战演练、算法解析及优化拓展的流程,讲解清楚且通俗易懂。附录介绍常见的数据结构及算法改进用到的相关知识,包括sort函数、优先队列、邻接表、并查集、四边不等式、排列树、贝尔曼规则、增广路复杂性计算等内容。

本书可作为程序员的学习用书,也适合从未有过编程经验但又对算法有强烈兴趣的初学者使用,同时也可作为高等院校计算机、数学及相关专业的师生用书和培训学校的教材。

目录结构:

  • 第1章 算法之美 1
  • 第2章 贪心算法 24
  • 第3章 分治法 99
  • 第4章 动态规划 141
  • 第5章 回溯法 248
  • 第6章 分支限界法 338
  • 第7章 线性规划网络流 405
  • 附录A 特征方程和通项公式 534
  • 附录B sort函数 537
  • 附录C 优先队列 541
  • 附录D 邻接表 549
  • 附录E 并查集 555
  • 附录F 四边不等式 561
  • 附录G 排列树 565
  • 附录H 贝尔曼规则 579
  • 附录I 增广路中称为关键边的次数 582
  • 附录J 最大流最小割定理 585

最后小编祝大家阅读愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值