从零开始学算法(基于Python)

从零开始学算法(基于Python)

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书的目的是帮助初学者掌握编程中的基础算法,并通过Python语言进行实战演练,通过即学即练的方式掌握这些经典算法,让读者真正体会算法的美妙,成为读者学习算法的领路人。

内容简介

本书分为8章,涵盖的主要内容有算法之美,通过生活中的例子学习算法;贪心算法,选择当前最优的方案;分而治之算法,将复杂的问题拆分为简单的问题;树算法,围绕树结构的各种算法;图算法,围绕图结构的各种算法;动态规划,一种求解最优问题的强大工具;回溯法,深度优先遍历问题的解空间;分支限界法,广度优先遍历问题的解空间。

作者简介

编著者李峰,本硕均就读于西北工业大学计算机学院,曾在韩国成均馆大学交流半年,CSDN博客专家,现就职于腾讯科技有限公司任高级工程师,工作期间,技术成果丰硕,多次获奖。

章节目录

版权信息

内容简介

前言

第1章 算法之美

1.1 生活中的算法——猜数游戏

1.1.1 好玩的猜数游戏

1.1.2 游戏的秘密——二分搜索技术

1.1.3 猜数游戏算法实现

1.2 算法的指标——空间复杂度和时间复杂度

1.2.1 时间复杂度

1.2.2 空间复杂度

1.3 经典算法回顾——排序算法

1.3.1 冒泡排序

1.3.2 简单选择排序

1.3.3 直接插入排序

1.4 怎样才能学好算法

第2章 贪心算法

2.1 短浅的眼光——贪心

2.1.1 适当的贪心——坏事变好事

2.1.2 过度贪心——赔了夫人又折兵

2.1.3 为贪心加上限制

2.2 美丽心灵——哈夫曼编码

2.2.1 认识哈夫曼编码

2.2.2 如何设计哈夫曼编码

2.2.3 哈夫曼编码算法实现

2.3 带你去旅行——单源最短路径

2.3.1 如何最快到朋友家做客

2.3.2 从最短的第一条路开始分析

2.3.3 找到抵达朋友家的最短路径

2.3.4 Dijkstra算法实现

2.4 选择困难症——背包问题

2.4.1 如何装沙子赚更多的钱

2.4.2 海盗的智慧

2.4.3 背包问题算法实现

2.5 搬家师傅的烦恼——集装箱装载问题

2.5.1 如何装更多的物品

2.5.2 搬家师傅的十年经验

2.5.3 装载问题算法实现

第3章 分而治之算法

3.1 纵横捭阖,各个击破——分而治之

3.1.1 分而治之——把复杂的事情简单化

3.1.2 可分可治,缺一不可

3.1.3 合久必分,分久必合——治而合之

3.2 真币和假币——伪币问题

3.2.1 可恶的假币

3.2.2 先对一半的硬币进行考虑

3.2.3 找出硬币的规律

3.3 再谈排序算法(1)——合并排序

3.3.1 如何将分而治之思想应用到合并排序上

3.3.2 先对一半的数字进行考虑

3.3.3 合并排序算法实现

3.4 再谈排序算法(2)——快速排序

3.4.1 如何将分而治之思想应用到快速排序上

3.4.2 找到一个“分”的中心

3.4.3 快速排序算法实现

3.4.4 排序算法总结

3.5 累人的比赛——循环赛日程安排

3.5.1 最公平的比赛

3.5.2 如何设计循环赛

3.5.3 找出循环赛的排列规律

第4章 树算法

4.1 生活中的“树”

4.1.1 炎黄子孙,生生不息

4.1.2 学校的组织结构

4.1.3 操作系统的目录结构

4.2 一叶一菩提——二叉树的遍历

4.2.1 什么是二叉树

4.2.2 二叉树的前序遍历

4.2.3 二叉树的中序遍历

4.2.4 二叉树的后序遍历

4.2.5 二叉树的平层遍历

4.3 重建家谱图——二叉树的还原

4.3.1 什么是二叉树的还原

4.3.2 前序遍历和中序遍历还原家谱图

4.3.3 中序遍历和后序遍历还原家谱图

4.4 十年树木,百年树人——二叉树的高度

4.4.1 什么是树的高度

4.4.2 在树的遍历基础上增加高度信息

4.4.3 遍历树获得高度信息

4.5 寻根溯源——找到所有祖先结点

4.5.1 什么是树的祖先

4.5.2 在树的遍历基础上增加结点找到信息

4.5.3 遍历树获得所有祖先

第5章 图算法

5.1 生活中的“图”

5.1.1 城市的交通轨道

5.1.2 人与人之间的关系

5.1.3 互联网的连接

5.2 寻找所有的城市——有向图的遍历

5.2.1 什么是有向图

5.2.2 有向图的深度优先遍历

5.2.3 有向图的广度优先遍历

5.3 最短的管道——Kruskal算法

5.3.1 如何铺设最短的管道

5.3.2 什么是最小生成树

5.3.3 Kruskal算法的贪心思想

5.3.4 Kruskal算法实现

5.4 再谈最短的管道——Prim算法

5.4.1 基于管道的边和结点贪心的区别

5.4.2 Prim算法的贪心思想

5.4.3 Prim算法实现

5.5 多源最短路径——Floyd算法

5.5.1 朋友之间相互访问的最短路径

5.5.2 自上而下分析朋友之间的最短路径

5.5.3 自下而上迭代朋友之间的最短路径

5.5.4 Floyd算法实现

第6章 动态规划算法

6.1 长远的眼光——动态规划

6.1.1 时间倒流,改变历史

6.1.2 慎用贪心算法

6.1.3 强者恒强,弱者恒弱——最优子结构

6.2 智能的语言翻译——编辑距离

6.2.1 设计语言翻译系统

6.2.2 考虑最后一次编辑情况

6.2.3 自下而上进行距离编辑

6.3 智能的电梯——电梯优化

6.3.1 设计智能电梯

6.3.2 先考虑最后一次电梯停留的情况

6.3.3 自下而上计算电梯的停留过程

6.4 名字的相似度——最长公共子序列

6.4.1 外国人名的相似度

6.4.2 考虑最后一个字符比较情况

6.4.3 自下而上进行距离编辑

第7章 回溯法

7.1 现代计算机的福音——回溯法

7.1.1 让猴子打出《莎士比亚全集》

7.1.2 一条路走到黑——深度遍历

7.1.3 乱花渐欲迷人眼——搜索中的剪枝

7.2 不能攻击的皇后——8个皇后问题

7.2.1 一山不容二虎

7.2.2 如何设计8个皇后的解向量

7.2.3 搜索过程中的剪枝

7.3 绝望的小老鼠——迷宫中的小老鼠

7.3.1 上帝视角帮助小老鼠

7.3.2 小老鼠如何进行搜索

7.3.3 小老鼠的出逃之路

7.4 再谈0/1背包问题

7.4.1 背包问题回顾

7.4.2 还可以使用贪心算法求解吗

7.4.3 通过搜索求解背包问题

7.5 再谈集装箱装载问题

7.5.1 集装箱装载问题回顾

7.5.2 使用贪心算法求解而存在的问题

7.5.3 通过搜索求解装载问题

第8章 分支限界法

8.1 一步一个脚印——分支限界

8.1.1 步步为营——广度遍历

8.1.2 剪掉没有营养的分支

8.1.3 条条大路通罗马——和回溯法的区别

8.2 再谈迷宫中的小老鼠问题

8.2.1 迷宫中的小老鼠问题回顾

8.2.2 使用分支限界思路规划小老鼠的路径

8.2.3 小老鼠的出逃之路

8.3 三谈0/1背包问题

8.3.1 0/1背包问题回顾

8.3.2 使用分支限界的思路装船

8.3.3 背包的搜索过程

8.4 三谈集装箱装载问题

8.4.1 集装箱装载问题回顾

8.4.2 使用分支限界的思路装载集装箱

8.4.3 集装箱的装载过程

从零开始学算法(基于Python)是2022年由电子工业出版社出版,作者李峰 编著。

得书感谢您对《从零开始学算法(基于Python)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
三步学Python 电子书
本书以类似课堂学习的方式,通过预习、体验、理解三个步骤讲解Python的基础知识。
Selenium自动化测试实战:基于Python 电子书
本书以Python3.8.2为基础,不但介绍了Selenium4.0alpha5的用法,而且介绍了测试模型、测试框架、测试策略方面的很多内容。本书共12章,内容主要包括Selenium自动化测试框架入门、Python环境的搭建、Selenium的安装、SeleniumIDE插件的安装与使用、Selenium脚本的编写、Selenium中的元素定位方法、自动化测试模型的搭建、自动化测试框架的设计、D
从零开始学数字电路 电子书
数字电路初学者的“傻瓜型”教材,深入浅出讲解。
Selenium自动化测试完全指南:基于Python 电子书
本书共有19章。第1~10章介绍SeleniumIDE、SeleniumWebDriver、SeleniumGrid、Appium等工具的应用。第11~16章介绍自动化测试实战的组织及模式优化,包括如何通过Selenium进行功能测试和非功能测试,如何完善功能测试驱动,如何设置功能测试的逻辑组织结构,如何优化功能测试的物理组织结构,如何增强功能测试的运行反馈机制。第17~19章讲述自动化实战的落实
趣学Python——教孩子学编程 电子书
  Python是一款解释型、面向对象、动态数据类型的高级程序设计语言。Python语法简捷而清晰,具有丰富和强大的类库,因而在各种行业中得到广泛的应用。对于初学者来讲,Python是一款既容易学又相当有用的编程语言,国内外很多大学开设这款语言课程,将Python作为一门编程语言学习。  《趣学Python:教孩子学编程》是一本轻松、快速掌握Python编程的入门读物。全书分为3部分,共18章。第