《算法图解》笔记——导读

这是一辆开往算法幼儿园的车,磨磨唧唧地看完了《算法图解》这本书,真的是不错的算法入门书。
趁这个机会再复习一下并优化一下以前的笔记,也分享下以前的笔记,有些许心得和思考。全书不到200页,对算法感兴趣还未接触过的同窗推荐你看下原书。
笔记中小结皆引自原文git


第一至第四章内容较少,笔记记为一篇
第五至第六章内容较少,笔记记为一篇github

第一章 简介

  1. 二分查找:很常见的在有序列表中作比较再作范围排除的查找算法,例如:35?大了。20?小了。25?对了。这就是个二分查找。
  2. 大O表示法,一种指出算法运行时间(随元素数)的增速的表示方法(忽略常数系数),可以让你比较方便的比较达到目的的(所需的)操做(次)数。如O(n),则对于元素数为n的列表,查找所需操做次数也为n。

第二章 选择排序

  1. 数组和链表两种数据结构。数组在内存中是连续的,由索引指向。链表中的每一个元素都有指向下个元素的地址。
  2. 选择排序:逐步找出剩余项中最大(小)值的算法。

第三章 递归

  • 递归的本质是压栈和出栈
  • 使用尾递归进行优化

第四章 快排算法

  • 使用分而治之的思想解决问题,将问题拆分为最小问题,解决并合并获得最终解。
  • 快排算法正是使用了这种思想的算法。快排算法找一项的值为基准值,将每一个元素与基准值按大小关系分为左分区和右分区,并在左分区和右分区作重复操做,直至分区只有一项(分而治之),而后合并全部(单项)子分区,获得排序结果。
  • 合并排序:将待排序列逐层拆分,直到成为单个项,并逐层两两合并,合并时比较第一项的大小并放入新的数组(一样是分而治之)。

第五章 散列表

  • js中的对象是基于散列表结构的。
  • 散列表是根据关键码值(Key value)而直接进行访问的数据结构,因此查找很快。应用也就是用来作查找,去重和缓存(去重和缓存仍是依赖于查找)。

第六章 广度优先搜索

  1. 图:节点加边,如:○———>○,这就是个基本的图。图根据有没有箭头分为有向图和无向图,其中无向图是即双向关系(a指b,b也指向a)的图。
  2. 广度优先搜索:按层遍历,遍历完第一层关系后进行第二层的遍历,实际操做时,可先将根节点添加至队列,检测根节点,如不是目标值,移出根节点,再将根节点的子节点(所指向的节点)添加至队列,循环直到找到目标值。

第七章 狄克斯特拉算法

此章节书中有错误,纠错查看笔记算法

  • 加权图:边上有权重值的图
  • 若是说广度优先搜索可查找至目标的(通过)最少边路径,那么狄克斯特拉算法就能够查找最低(权重,能够是金钱花费,时间花费)成本的路径。
  • 实际操做(详细实例操做看笔记):数组

    1. 列出除起点外的全部节点;
    2. 对起点外节点添加权重值,其中起点直接指向的节点的权重是能直接列出的,其余节点可列为∞(无穷);
    3. 找到目前权重最小的节点,重复步骤2,即列出此节点指向节点的权重(需途径当前节点),若已有权重,则与当前权重比较取较小值并更新,同时将当前节点标记为已操做。
    4. 找到目前未操做的权重最小的节点,重复上述步骤;
    5. 全部节点操做完毕后,便可获得达到终点的最小权重。
    6. 路径怎么找呢,在上述添加个更新权重的时候,应该记录到达此节点的上一个节点是谁,那么从终点向上便可获得当前的最短路径。

第八章 贪婪算法

  • 贪婪算法不是具体的算法,而是一种解决问题的思想,经过局部利益的最大化,最终可以实现全局利益的最大化或者能够说是接近于全局利益最大化。好比:前文的狄克斯特拉算法,就是每步先找当前权重最小的值,或者如何在有限的时间内安排最多的课程,就安排在剩余时间里最先开始并最先结束的课程。
  • 能够较快的解决NP彻底问题
  • 简单的说NP彻底问题是难以解决的问题,大多须要先列出全部的解,再找到最小的那个,复杂度会随元素数量急剧增长。

第九章 动态规划

  • 将问题分为小问题,并先着手解决这些小问题。与分而治之不一样的是,分而治之须要在计算每一个子问题的时候都进行一边计算,而动态规划则更可能是范围变大的子问题与以前的更小范围的子问题的结果进行比较。这一章节比较很差理解,参考个人笔记也可能会有些片面,你们能够本身查查资料
  • 经典问题:背包问题

第十章 k最近邻算法

  • 所谓K最近邻,就是K个最近的邻居的意思,说的是每一个样本均可以用它最接近的K个邻居来表明。
  • 运用:缓存

    1. 分类:你与k我的的歌曲喜爱类似,那么这k我的的喜爱歌曲就能够推送给你
    2. 回归:今天的其余状况(天气,日期,活动等)与k天的相似,那么就能够经过k天的平均营业额推测今天的营业额

第十一章 接下来如何作

  • 其余的算法与应用

结束了,每章小结真是复习和阅读解惑的好东西。数据结构

相关文章
相关标签/搜索