计算机
类型
可以朗读
语音朗读
92千字
字数
2020-08-01
发行日期
展开全部
主编推荐语
Python算法入门书:理论实务同步,覆盖数据结构、信息安全、人工智能算法,附120个实例和600张示意图。
内容简介
这是一本使用Python从零开始指导读者的算法入门书籍,从基础数据结构与算法开始,同时解说信息安全算法,最后也讲解人工智能入门的 KNN 和 K-means 算法。整本书的特色是理论与实务同步解说,使用完整的数据结构图鉴搭配 Python 程序实作做解说,让读者可以很轻松掌握相关知识。全书内容包含120个程序实例,使用约 600张完整图表或图例,完整解说7种数据结构,数十种算法相关知识,此外也针对国内外著名公司应征程序设计师的算法考题做解说。
目录
- 封面页
- 书名页
- 版权页
- 作者简介
- 内容简介
- 前言
- 目录
- 第1章 算法基本概念
- 1-1 计算机的算法
- 1-2 不好的算法与好的算法
- 1-2-1 不好的算法
- 1-2-2 好的算法
- 1-3 程序执行的时间测量方法:时间复杂度
- 1-3-1 基本概念
- 1-3-2 时间测量复杂度
- 1-4 内存的使用:空间复杂度
- 1-4-1 基本概念
- 1-4-2 常见的空间复杂度计算
- 1-5 数据结构
- 1-6 习题
- 第2章 数组
- 2-1 基本概念
- 2-2 使用索引存取数组内容
- 2-3 新数据插入数组
- 2-3-1 假设当下有足够的连续内存空间
- 2-3-2 假设当下没有足够的连续内存空间
- 2-4 删除数组元素
- 2-5 思考数组的优缺点
- 2-6 与数组有关的Python程序
- 2-6-1 建立数组
- 2-6-2 存取数组内容
- 2-6-3 将数据插入数组
- 2-6-4 删除数组元素
- 2-6-5 搜寻数组元素
- 2-6-6 更新数组内容
- 2-6-7 Numpy
- 2-7 习题
- 第3章 链表
- 3-1 链表数据形式与内存概念
- 3-2 链表的数据读取
- 3-3 新数据插入链表
- 3-4 删除链表的节点元素
- 3-5 循环链表(circle linked list)
- 3-6 双向链表
- 3-7 数组与链表基本操作的时间复杂度比较
- 3-8 与链表有关的Python程序
- 3-8-1 建立链表
- 3-8-2 建立链表类别和遍历此链表
- 3-8-3 在链表第一个节点前插入一个新的节点
- 3-8-4 在链表末端插入新的节点
- 3-8-5 在链表中间插入新的节点
- 3-8-6 在链表中删除指定内容的节点
- 3-8-7 建立循环链表
- 3-8-8 双向链表
- 3-9 习题
- 第4章 队列
- 4-1 数据插入enqueue
- 4-2 数据读取dequeue
- 4-3 使用列表模仿队列的操作
- 4-4 与队列有关的Python模块
- 4-5 习题
- 第5章 栈
- 5-1 数据推入push
- 5-2 数据取出pop
- 5-3 Python中栈的应用
- 5-3-1 使用列表(list)模拟栈操作
- 5-3-2 自行建立stack类别执行相关操作
- 5-4 函数调用与栈运作
- 5-5 递归调用与栈运作
- 5-6 习题
- 第6章 二叉树
- 6-1 建立二叉树
- 6-2 删除二叉树的节点
- 6-3 搜寻二叉树的数据
- 6-4 更进一步认识二叉树
- 6-5 内存存储二叉树的方法
- 6-6 Python中二叉树的运用
- 6-6-1 使用数组建立二叉树
- 6-6-2 链表方式建立二叉树的根节点
- 6-6-3 使用链表建立二叉树
- 6-6-4 遍历二叉树使用中序(inorder)打印
- 6-6-5 遍历二叉树使用前序(preorder)打印
- 6-6-6 遍历二叉树使用后序(postorder)打印
- 6-6-7 二叉树节点的搜寻
- 6-6-8 二叉树节点的删除
- 6-6-9 二叉树的应用与工作效率
- 6-7 习题
- 第7章 堆积树
- 7-1 建立堆积树
- 7-2 插入数据到堆积树
- 7-3 取出最小堆积树的值
- 7-4 最小堆积树与数组
- 7-5 Python内建堆积树模块heapq
- 7-5-1 建立二叉堆积树heapify( )
- 7-5-2 推入元素到堆积heappush( )
- 7-5-3 从堆积取出和删除元素heappop( )
- 7-5-4 推入和取出heappushpop( )
- 7-5-5 传回最大或是最小的n个元素
- 7-5-6 取出堆积的最小值和插入新元素
- 7-5-7 堆积的元素是元组(tuple)
- 7-5-8 二叉堆积树排序的应用
- 7-6 Python硬功夫:自己建立堆积树
- 7-6-1 自己建立堆积树
- 7-6-2 自己建立方法取出堆积树的最小值
- 7-6-3 插入节点
- 7-7 习题
- 第8章 哈希表
- 8-1 基本概念
- 8-2 哈希表转成数组
- 8-2-1 哈希表写入
- 8-2-2 哈希碰撞与链结法
- 8-2-3 哈希碰撞与开放寻址法
- 8-3 搜寻哈希表
- 8-4 哈希表的规模与扩充
- 8-5 好的哈希表与不好的哈希表
- 8-6 哈希表效能分析
- 8-7 Python程序应用
- 8-7-1 Python建立哈希表
- 8-7-2 建立电话号码簿
- 8-7-3 避免数据重复
- 8-8 认识哈希表模块hashlib
- 8-8-1 使用md5( )方法计算中文/英文数据的哈希值
- 8-8-2 计算文件的哈希值
- 8-8-3 使用sha1( )方法计算哈希值
- 8-8-4 认识此平台可以使用的哈希算法
- 8-8-5 认识跨平台可以使用的哈希算法
- 8-9 习题
- 第9章 排序
- 9-1 排序的概念与应用
- 9-2 泡沫排序法(bubble sort)
- 9-2-1 图解泡沫排序算法
- 9-2-2 Python程序实例
- 9-3 鸡尾酒排序(cocktail sort)
- 9-3-1 图解鸡尾酒排序算法
- 9-3-2 Python程序实例
- 9-4 选择排序(selection sort)
- 9-4-1 图解选择排序算法
- 9-4-2 Python程序实例
- 9-4-3 选择排序的应用
- 9-5 插入排序(insertion sort)
- 9-5-1 图解插入排序算法
- 9-5-2 插入排序与玩扑克牌
- 9-5-3 Python程序实例
- 9-6 堆积树排序(heap sort)
- 9-6-1 图解堆积树排序算法
- 9-6-2 Python程序实例
- 9-7 快速排序(quick sort)
- 9-7-1 图解快速排序算法
- 9-7-2 Python程序实例
- 9-8 合并排序(merge sort)
- 9-8-1 图解合并排序算法
- 9-8-2 Python程序实例
- 9-9 习题
- 第10章 数据搜寻
- 10-1 顺序搜寻法(sequential search)
- 10-1-1 图解顺序搜寻算法
- 10-1-2 Python程序实例
- 10-2 二分搜寻法(binary search)
- 10-2-1 图解二分搜寻法
- 10-2-2 Python程序实例
- 10-3 搜寻最大值算法
- 10-4 习题
- 第11章 栈、回溯算法与迷宫
- 11-1 走迷宫与回溯算法
- 11-2 迷宫设计栈扮演的角色
- 11-3 Python程序走迷宫
- 11-4 习题
- 第12章 从递归看经典算法
- 12-1 斐波那契(Fibonacci)数列
- 12-2 河内塔算法
- 12-2-1 了解河内塔问题
- 12-2-2 手动实践河内塔问题
- 12-2-3 Python程序实践河内塔问题
- 12-3 八皇后算法
- 12-3-1 了解八皇后的题目
- 12-3-2 回溯算法与八皇后
- 12-3-3 递归的解法
- 12-4 分形与VLSI设计算法
- 12-4-1 算法基本概念
- 12-4-2 Python程序实例
- 12-5 习题
- 第13章 图形理论
- 13-1 图形的基本概念
- 13-1-1 基本概念
- 13-1-2 生活实例的概念扩展
- 13-1-3 加权图形(weighted graph)
- 13-1-4 有向图形(directed graph)
- 13-1-5 有向无环图(directed acycle graph)
- 13-1-6 拓扑排序(topological sort)
- 13-2 广度优先搜寻算法概念解说
- 13-2-1 广度优先搜寻算法理论
- 13-2-2 生活实务解说
- 13-2-3 最短路径
- 13-3 Python实践广度优先搜寻算法
- 13-3-1 好用的collections模块的deque()
- 13-3-2 广度优先搜寻算法实例
- 13-3-3 广度优先算法拜访所有节点
- 13-3-4 走迷宫
- 13-4 深度优先搜寻算法概念解说
- 13-4-1 深度优先搜寻算法理论
- 13-4-2 深度优先搜寻算法实例
- 13-5 习题
- 第14章 图形理论之最短路径算法
- 14-1 戴克斯特拉(Dijkstra's)算法
- 14-1-1 最短路径与最快路径问题
- 14-1-2 戴克斯特拉算法
- 14-1-3 Python程序实例
- 14-2 贝尔曼-福特(Bellman-Ford)算法
- 14-3 A*算法
- 14-4 习题
- 第15章 贪婪算法
- 15-1 选课分析
- 15-1-1 问题分析
- 15-1-2 算法分析
- 15-1-3 Python程序实例
- 15-2 背包问题:贪婪算法不是最完美的结果
- 15-2-1 问题分析
- 15-2-2 算法分析
- 15-2-3 Python实例
- 15-3 电台选择
- 15-3-1 问题分析
- 15-3-2 算法分析
- 15-3-3 Python实例
- 15-4 业务员旅行
- 15-4-1 问题分析
- 15-4-2 算法分析
- 15-5 习题
- 第16章 动态规划算法
- 16-1 再谈背包问题:动态规划算法
- 16-1-1 简单同时正确的算法但是耗时
- 16-1-2 动态规划算法
- 16-1-3 动态算法延伸探讨
- 16-1-4 存放顺序也不影响结果
- 16-1-5 Python程序实例
- 16-2 旅游行程的安排
- 16-2-1 旅游行程概念
- 16-2-2 Python程序实例
- 16-3 习题
- 第17章 数据加密到信息安全算法
- 17-1 数据安全与数据加密
- 17-1-1 认识数据安全的专有名词
- 17-1-2 加密
- 17-2 摩斯密码(Morse code)
- 17-3 凯撒密码
- 17-4 再谈文件加密技术
- 17-5 全天下只有你可以解的加密程序(你也可能无法解)
- 17-6 哈希函数与SHA家族
- 17-6-1 再谈哈希函数
- 17-6-2 MD5(Message-Digest Algorithm)
- 17-6-3 SHA家族
- 17-7 密钥密码
- 17-7-1 对称密钥密码
- 17-7-2 公钥密码
- 17-8 讯息鉴别码(message authentication code)
- 17-9 数字签名(digital signature)
- 17-10 数字证书(digital certificate)
- 17-11 习题
- 第18章 人工智能破冰之旅:KNN和K-means算法
- 18-1 KNN算法:电影分类
- 18-1-1 规划特征值
- 18-1-2 将KNN算法应用在电影分类
- 18-1-3 项目程序实例
- 18-1-4 电影分类结论
- 18-2 KNN算法:选举造势与销售烤香肠
- 18-2-1 规划特征值表
- 18-2-2 回归方法
- 18-2-3 项目程序实例
- 18-3 K-means算法
- 18-3-1 算法基础
- 18-3-2 程序实例
- 18-4 习题
- 第19章 常见职场面试算法
- 19-1 质数测试
- 19-2 回文算法
- 19-3 欧几里得算法
- 19-3-1 土地区块划分
- 19-3-2 最大公约数(greatest common divisor)
- 19-3-3 辗转相除法
- 19-3-4 递归式函数设计处理欧几里得算法
- 19-4 最小公倍数(least common multiple)
- 19-5 鸡兔同笼问题
- 19-6 挖金矿问题
- 19-7 习题
- 附录CD
展开全部
出版方
清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。