算法零基础一本通 Python版 作者:洪锦魁 出版时间:2020年版内容简介 《算法零基础一本通(Python版)》使用 Python 指导读者从零开始学习算法 :由基础数据结构开始,逐步解说信息安全算法,*后也讲解了人工智能入门领域的 KNN 和 K-means 算法。《算法零基础一本通(Python版)》包含约 120 个程序实例,使用约 600 张完整图例,深入讲解了 7 种数据结构和数十种算法,此外也针对国内外著名公司招聘程序员的算法考题做了讲解。《算法零基础一本通(Python版)》实用性强、案例丰富,适合有一定 Python 基础的读者使用,也可作为大中专院校及培训机构的参考教材。目录目 录 第 1 章 算法基本概念 1-1 计算机的算法................................2 1-2 不好的算法与好的算法...................3 1-2-1 不好的算法 ....................................... 3 1-2-2 好的算法 ........................................... 7 1-3 程序执行的时间测量方法 :时间 复杂度.........................................8 1-3-1 基本概念 ........................................ 8 1-3-2 时间测量复杂度 ............................... 9 1-4 内存的使用 :空间复杂度..............12 1-4-1 基本概念 ......................................... 12 1-4-2 常见的空间复杂度计算 ................. 14 1-5 数据结构....................................16 1-6 习题..........................................16 第 2 章 数组 2-1 基本概念....................................20 2-2 使用索引存取数组内容.................20 2-3 新数据插入数组...........................20 2-3-1 假设当下有足够的连续内存 空间 ................................................ 21 2-3-2 假设当下没有足够的连续内存 空间 ................................................ 22 2-4 删除数组元素..............................22 2-5 思考数组的优缺点........................23 2-6 与数组有关的 Python 程序...........24 2-6-1 建立数组 ......................................... 25 2-6-2 存取数组内容 ................................. 25 2-6-3 将数据插入数组 ............................. 26 2-6-4 删除数组元素 ................................. 27 2-6-5 搜寻数组元素 ................................. 28 2-6-6 更新数组内容 ................................. 28 2-6-7 Numpy ............................................. 28 2-7 习题..........................................29 第 3 章 链表 3-1 链表数据形式与内存概念..............32 3-2 链表的数据读取...........................32 3-3 新数据插入链表...........................33 3-4 删除链表的节点元素....................34 3-5 循环链表 (circle linked list)..........34 3-6 双向链表....................................34 3-7 数组与链表基本操作的时间复杂度 比较..........................................34 3-8 与链表有关的 Python 程序...........35 3-8-1 建立链表 ......................................... 35 3-8-2 建立链表类别和遍历此链表 .......... 36 3-8-3 在链表个节点前插入一个 新的节点......................................... 37 3-8-4 在链表末端插入新的节点 .............. 39 3-8-5 在链表中间插入新的节点 .............. 40 3-8-6 在链表中删除指定内容的节点 ...... 42 3-8-7 建立循环链表 ................................. 43 3-8-8 双向链表 ......................................... 44 3-9 习题..........................................47 第 4 章 队列 4-1 数据插入 enqueue......................50 4-2 数据读取 dequeue......................51 4-3 使用列表模仿队列的操作..............51 4-4 与队列有关的 Python 模块...........53 4-5 习题..........................................54 第 5 章 栈 5-1 数据推入 push............................56 5-2 数据取出 pop..............................57 5-3 Python 中栈的应用......................58 5-3-1 使用列表 (list) 模拟栈操作 ............ 58 5-3-2 自行建立 stack 类别执行相关 操作 ................................................ 59 5-4 函数调用与栈运作?.......................615-5 递归调用与栈运作?.......................625-6 习题?.........................................66第 6 章?二叉树6-1 建立二叉树?................................686-2 删除二叉树的节点?.......................706-3 搜寻二叉树的数据?.......................726-4 更进一步认识二叉树?...................746-5 内存存储二叉树的方法?................756-6 Python 中二叉树的运用?..............776-6-1 使用数组建立二叉树 .....................776-6-2 链表方式建立二叉树的根节点 ......796-6-3 使用链表建立二叉树 .....................806-6-4 遍历二叉树使用中序 (inorder) 打印 ................................................806-6-5 遍历二叉树使用前序 (preorder) 打印 ................................................856-6-6 遍历二叉树使用后序 (postorder) 打印 ................................................896-6-7 二叉树节点的搜寻 .........................946-6-8 二叉树节点的删除 .........................966-6-9 二叉树的应用与工作效率 ..............986-7 习题?.........................................98第 7 章?堆积树7-1 建立堆积树?..............................1027-2 插入数据到堆积树?.....................1037-3 取出小堆积树的值?.................1057-4 小堆积树与数组?.....................1067-5 Python 内建堆积树模块 heapq?..1077-5-1 建立二叉堆积树 heapify( ) ...........1077-5-2 推入元素到堆积 heappush( ) ........ 1087-5-3 从堆积取出和删除元素 heappop( ) ..................................... 1097-5-4 推入和取出 heappushpop( ) .......... 1107-5-5 传回或是小的 n 个元素 .... 1107-5-6 取出堆积的小值和插入新元素 .1117-5-7 堆积的元素是元组 (tuple) .............1117-5-8 二叉堆积树排序的应用 ............... 1127-6 Python 硬功夫 :自己建立 ???堆积树?....................................1137-6-1 自己建立堆积树 ........................... 1137-6-2 自己建立方法取出堆积树的 小值 .......................................... 1147-6-3 插入节点 ....................................... 1157-7 习题?.......................................115第 8 章?哈希表8-1 基本概念?.................................1188-2 哈希表转成数组?........................1198-2-1 哈希表写入 ................................... 1198-2-2 哈希碰撞与链结法 ....................... 1218-2-3 哈希碰撞与开放寻址法 ............... 1228-3 搜寻哈希表?..............................1228-4 哈希表的规模与扩充?.................1248-5 好的哈希表与不好的哈希表?........1258-6 哈希表效能分析?........................1268-7 Python 程序应用?......................1268-7-1 Python 建立哈希表 ....................... 1278-7-2 建立电话号码簿 ........................... 1278-7-3 避免数据重复 ............................... 1288-8 认识哈希表模块 hashlib?............1298-8-1 使用 md5( ) 方法计算中文 / 英文 数据的哈希值 ............................... 1308-8-2 计算文件的哈希值 ....................... 1318-8-3 使用 sha1( ) 方法计算哈希值 ....... 1328-8-4 认识此平台可以使用的哈希 算法 .............................................. 1328-8-5 认识跨平台可以使用的哈希 算法 .............................................. 1338-9 习题?.......................................133第 9 章?排序9-1 排序的概念与应用?.....................1369-2 泡沫排序法 (bubble?sort)?..........1379-2-1 图解泡沫排序算法 .................... 1379-2-2 Python 程序实例 ........................... 1409-3 鸡尾酒排序 (cocktail?sort)?.........1429-3-1 图解鸡尾酒排序算法 ................... 1429-3-2 Python 程序实例 ........................... 1449-4 选择排序 (selection?sort)?..........1459-4-1 图解选择排序算法 ....................... 1459-4-2 Python 程序实例 ........................... 1479-4-3 选择排序的应用 ........................... 1489-5 插入排序 (insertion?sort)?..........1499-5-1 图解插入排序算法 ....................... 1499-5-2 插入排序与玩扑克牌 ................... 1519-5-3 Python 程序实例 ........................... 1519-6 堆积树排序 (heap?sort).............1529-6-1 图解堆积树排序算法 ................... 1529-6-2 Python 程序实例 ........................... 1549-7 快速排序 (quick?sort)?...............1579-7-1 图解快速排序算法 ....................... 1579-7-2 Python 程序实例 ........................... 1599-8 合并排序 (merge?sort)?.............1599-8-1 图解合并排序算法 ....................... 1599-8-2 Python 程序实例 ........................... 1639-9 习题?.......................................164第 10 章?数据搜寻10-1 顺序搜寻法 (sequential?search)?..............16810-1-1 图解顺序搜寻算法 ..................... 16810-1-2 Python 程序实例 ......................... 16810-2 二分搜寻法 (binary?search)?....16910-2-1 图解二分搜寻法 ......................... 16910-2-2 Python 程序实例 ......................... 17010-3 搜寻值算法?......................17110-4 习题?.....................................171第 11 章?栈、回溯算法与迷宫11-1 走迷宫与回溯算法?...................17411-2 迷宫设计栈扮演的角色?............17711-3 Python 程序走迷宫?.................17711-4 习题?.....................................180第 12 章?从递归看经典算法12-1 斐波那契 (Fibonacci) 数列?......18412-2 河内塔算法?............................18512-2-1 了解河内塔问题 ......................... 18512-2-2 手动实践河内塔问题 ................. 18712-2-3 Python 程序实践河内塔问题 ..... 19112-3 八皇后算法?............................19312-3-1 了解八皇后的题目 ..................... 19312-3-2 回溯算法与八皇后 ..................... 19412-3-3 递归的解法 ................................. 19612-4 分形与 VLSI 设计算法?.............19712-4-1 算法基本概念 ............................. 19712-4-2 Python 程序实例 ......................... 19912-5 习题......................................200第 13 章?图形理论13-1 图形的基本概念?......................20613-1-1 基本概念 ..................................... 20613-1-2 生活实例的概念扩展 ................. 20613-1-3 加权图形 (weighted graph) ......... 20713-1-4 有向图形 (directed graph) ........... 20813-1-5 有向无环图 (directed acycle graph) .......................................... 20913-1-6 拓扑排序 (topological sort) ......... 20913-2 广度优先搜寻算法概念解说?......20913-2-1 广度优先搜寻算法理论 ........... 20913-2-2 生活实务解说 ............................. 21213-2-3 短路径 ..................................... 21513-3 Python 实践广度优先搜寻算法?...21513-3-1 好用的 collections 模块的 deque() ........................................ 21513-3-2 广度优先搜寻算法实例.............. 21713-3-3 广度优先算法拜访所有节点 ...... 21913-3-4 走迷宫 ......................................... 22213-4 深度优先搜寻算法概念解说?......22413-4-1 深度优先搜寻算法理论 ........... 22413-4-2 深度优先搜寻算法实例 ............ 22913-5 习题?.....................................231第 14 章?图形理论之短路径算法14-1 戴克斯特拉 (Dijkstra’s) 算法?....23414-1-1 短路径与快路径问题 .......... 23414-1-2 戴克斯特拉算法 ......................... 23414-1-3 Python 程序实例 ......................... 23714-2 贝尔曼 - 福特 (Bellman-Ford)????算法?.....................................23814-3 A* 算法?.................................24114-4 习题?.....................................244第 15 章?贪婪算法15-1 选课分析?...............................24815-1-1 问题分析 .................................. 24815-1-2 算法分析 ..................................... 24915-1-3 Python 程序实例 ......................... 25015-2 背包问题 :贪婪算法不是 完美的结果?.........................25115-2-1 问题分析 .................................. 25115-2-2 算法分析 ..................................... 25115-2-3 Python 实例 ................................ 25115-3 电台选择?...............................25315-3-1 问题分析 .................................. 25315-3-2 算法分析 ..................................... 25315-3-3 Python 实例 ................................ 25815-4 业务员旅行?............................25915-4-1 问题分析 ..................................... 25915-4-2 算法分析 ..................................... 26015-5 习题?.....................................266第 16 章?动态规划算法16-1 再谈背包问题 :动态规划算法?...27016-1-1 简单同时正确的算法但是耗时 ... 27016-1-2 动态规划算法 ............................. 27216-1-3 动态算法延伸探讨 ..................... 27516-1-4 存放顺序也不影响结果..............27616-1-5 Python 程序实例 ......................... 27616-2 旅游行程的安排?......................27716-2-1 旅游行程概念 ........................... 27716-2-2 Python 程序实例 ......................... 27716-3 习题?.....................................278第 17 章?数据加密到信息安全算法17-1 数据安全与数据加密?................28217-1-1 认识数据安全的专有名词 .......... 28217-1-2 加密 ............................................. 28317-2 摩斯密码 (Morse?code)?..........28417-3 凯撒密码?...............................28517-4 再谈文件加密技术?...................28717-5 全天下只有你可以解的加密程序????( 你也可能无法解 )?..................28817-6 哈希函数与 SHA 家族?.............29017-6-1 再谈哈希函数 ............................. 29017-6-2 MD5(Message-DigestAlgorithm) ................................... 29117-6-3 SHA 家族 ....................................29217-7 密钥密码?...............................29517-7-1 对称密钥密码 ............................. 29517-7-2 公钥密码 ..................................... 29717-8 讯息鉴别码 (message?????authentication?code)?.............30217-9 数字签名 (digital?signature)?....30417-10 数字证书 (digital?certificate)?..30617-11?习题?....................................309第 18 章?人工智能破冰之旅 :KNN 和K-means 算法18-1 KNN 算法 : 电影分类?..............31218-1-1 规划特征值 ................................. 31218-1-2 将 KNN 算法应用在电影分类 ... 31218-1-3 项目程序实例 ............................. 31318-1-4 电影分类结论 ............................. 31418-2 KNN 算法 :选举造势与销售?????烤香肠?..................................31418-2-1 规划特征值表 ............................. 31418-2-2 回归方法 ..................................... 31418-2-3 项目程序实例 ............................. 31518-3 K-means 算法?......................31618-3-1 算法基础 ..................................... 31618-3-2 程序实例 ..................................... 31718-4 习题?.....................................322第 19 章?常见职场面试算法19-1 质数测试?...............................32619-2 回文算法?...............................32719-3 欧几里得算法?.........................32819-3-1 土地区块划分 ............................. 32819-3-2 公约数 (greatest commondivisor) ........................................ 32819-3-3 辗转相除法 ................................. 32919-3-4 递归式函数设计处理欧几里得算法 ............................................ 33019-4 小公倍数 (least?common????multiple)?...............................33019-5 鸡兔同笼问题?.........................33019-6 挖金矿问题?............................33219-7 习题?.....................................333 上一篇: 科学与工程计算技术丛书 MATLAB、Simulink权威指南:开发环境、程序设计、系统仿真与案例实战 下一篇: 精通Spring Cloud微服务架构 [美]闵可夫斯基 2019年版