漫画算法:小灰的算法之旅(Python篇) | 您所在的位置:网站首页 › 小灰的算法之旅python百度云 › 漫画算法:小灰的算法之旅(Python篇) |
"●小灰的算法故事给算法这颗“炮弹”包上了“糖衣”,让算法的威力潜藏于内,外表不再吓人,萌萌哒Q弹可爱。●从基本数据结构,到各类常用算法,再到面试算法,再到职场应用,书中的主角小灰和大黄带领大家逐个破解。●和一群快乐的小仓鼠共同领悟算法思想、理解算法对内存空间和性能的影响,并开动脑筋去寻求解决问题的高效方案。" 本书通过虚拟的主人公小灰的心路历程,用漫画的形式讲述了算法和数据结构的基础知识、复杂多变的算法面试题目及算法的实际应用场景。章 介绍了算法和数据结构的相关概念,告诉大家算法是什么,数据结构又是什么,它们有哪些用途,如何分析时间复杂度,如何分析空间复杂度。第2章 介绍了很基本的数据结构,包括数组、链表、栈、队列、哈希表的概念和读写操作。第3章 介绍了树和二叉树的概念、二叉树的各种遍历方式、二叉树的特殊形式――二叉堆和优先队列的应用。第4章 介绍了几种典型的排序算法,包括冒泡排序、快速排序、堆排序、计数排序、桶排序。第5章 介绍了10余道职场上流行的算法面试题及详细的解题思路。例如怎样判断链表有环,怎样计算大整数相加等。第6章 介绍了算法在职场上的一些应用,例如使用LRU算法来淘汰冷数据,使用Bitmap算法来统计用户特征等。 微信公众号程序员小灰的作者,多年的软件行业从业经验,先后在京东金融和摩拜科技从事算法和研发相关工作,对算法有着深入的研究。 章 算法概述 / 11.1 算法和数据结构 / 11.1.1 小灰和大黄 / 11.1.2 什么是算法 / 31.1.3 什么是数据结构 / 71.2 时间复杂度 / 81.2.1 算法的好与坏 / 81.2.2 基本操作执行次数 / 101.2.3 渐进时间复杂度 / 121.2.4 时间复杂度的巨大差异 / 151.3 空间复杂度 / 161.3.1 什么是空间复杂度 / 161.3.2 空间复杂度的计算 / 191.3.3 时间与空间的取舍 / 211.4 小结 / 22第2章 数据结构基础 / 232.1 什么是数组 / 232.1.1 初识数组 / 232.1.2 数组的基本操作 / 262.1.3 数组的优势和劣势 / 322.2 什么是链表 / 322.2.1 “正规军”和“地下党” / 322.2.2 链表的基本操作 / 352.2.3 数组VS链表 / 402.3 栈和队列 / 412.3.1 物理结构和逻辑结构 / 412.3.2 什么是栈 / 422.3.3 栈的基本操作 / 432.3.4 什么是队列 / 442.3.5 队列的基本操作 / 452.3.6 栈和队列的应用 / 482.4 神奇的哈希表 / 502.4.1 为什么需要哈希表 / 502.4.2 哈希函数 / 522.4.3 哈希表的读写操作 / 532.5 小结 / 56第3章 树 / 583.1 树和二叉树 / 583.1.1 什么是树 / 583.1.2 什么是二叉树 / 613.1.3 二叉树的应用 / 643.2 二叉树的遍历 / 683.2.1 为什么要研究遍历 / 683.2.2 深度优先遍历 / 703.2.3 广度优先遍历 / 803.3 什么是二叉堆 / 833.3.1 初识二叉堆 / 833.3.2 二叉堆的自我调整 / 863.3.3 二叉堆的代码实现 / 913.4 什么是优先队列 / 933.4.1 优先队列的特点 / 933.4.2 优先队列的实现 / 953.5 小结 / 98第4章 排序算法 / 1004.1 引言 / 1004.2 什么是冒泡排序 / 1024.2.1 初识冒泡排序 / 1024.2.2 冒泡排序的优化 / 1054.2.3 鸡尾酒排序 / 1084.3 什么是快速排序 / 1124.3.1 初识快速排序 / 1124.3.2 基准元素的选择 / 1144.3.3 元素的交换 / 1164.3.4 单边循环法 / 1184.3.5 非递归实现 / 1214.4 什么是堆排序 / 1234.4.1 传说中的堆排序 / 1234.4.2 堆排序的代码实现 / 1274.5 计数排序和桶排序 / 1294.5.1 线性时间的排序 / 1294.5.2 初识计数排序 / 1304.5.3 计数排序的优化 / 1324.5.4 什么是桶排序 / 1374.6 小结 / 140第5章 面试中的算法 / 1415.1 踌躇满志的小灰 / 1415.2 如何判断链表有环 / 1425.2.1 一场与链表相关的面试 / 1425.2.2 解题思路 / 1465.2.3 问题扩展 / 1485.3 最小栈的实现 / 1515.3.1 一场关于栈的面试 / 1515.3.2 解题思路 / 1535.4 如何求出优选公约数 / 1565.4.1 一场求优选公约数的面试 / 1565.4.2 解题思路 / 1585.5 如何判断一个数是否为2的整数次幂 / 1625.5.1 一场很“2”的面试 / 1625.5.2 解题思路 / 1655.6 无序数组排序后的优选相邻差 / 1675.6.1 一道奇葩的面试题 / 1675.6.2 解题思路 / 1685.7 如何用栈实现队列 / 1735.7.1 又是一道关于栈的面试题 / 1735.7.2 解题思路 / 1745.8 寻找全排列的下一个数 / 1795.8.1 一道关于数字的题目 / 1795.8.2 解题思路 / 1815.9 删去k个数字后的最小值 / 1845.9.1 又是一道关于数字的题目 / 1845.9.2 解题思路 / 1865.10 如何找到两个数组的中位数 / 1925.10.1 有关中位数的问题 / 1925.10.2 解题思路 / 1945.11 如何求解金矿问题 / 2005.11.1 一个关于财富自由的问题 / 2005.11.2 解题思路 / 2025.12 寻找缺失的整数 / 2115.12.1 “五行”缺一个整数 / 2115.12.2 问题扩展 / 213第6章 算法的实际应用 / 2186.1 小灰上班的天 / 2186.2 Bitmap的巧用 / 2206.2.1 一个关于用户标签的需求 / 2206.2.2 用算法解决问题 / 2226.3 LRU算法的应用 / 2286.3.1 一个关于用户信息的需求 / 2286.3.2 用算法解决问题 / 2316.4 什么是A星寻路算法 / 2366.4.1 一个关于迷宫寻路的需求 / 2366.4.2 用算法解决问题 / 2386.5 如何实现红包算法 / 2486.5.1 一个关于钱的需求 / 2486.5.2 用算法解决问题 / 2516.6 算法之路无止境 / 254 |
CopyRight 2018-2019 实验室设备网 版权所有 |