最近,我参加了CSDN举办的“从高考到程序员”征文活动,获赠了一本图书。在众多图书中,我选了《算法神探》,觉得这本书从名字上来看就比较有意思。拿到书之后,我分两次就把它读完了,可以毫不夸张地说,这是一本让你可以一口气就读完的计算机科普类图书。

首先说一下这本书的大致情况。本书是Google首席工程师Jeremy Kubica的作品(当然,这个人我也没听说过),翻译者是啊哈磊和李嘉浩。对于啊哈磊这个人,IT行业的人或许听说过,他写过一本书叫《啊哈!算法》,读者挺多的。《算法神探》这本书一共二百多页,29个章节,几乎每章都涉及到一种算法或数据结构。在跌宕起伏的故事情节中,我们可以领略到算法之美。

本书的故事情节大概是这样的:一个王国的警局总部遭遇了一起盗窃案,警长请一位被解雇的前探员Frank Runtime来将这个案子调查清楚;之所以要请一位被解雇的探员,是因为他是一位老练的私家侦探,并且非常擅长搜索;Frank Runtime利用他的搜索算法搜查走私的船、跟踪间谍、逃离监狱、开锁,并在最后揭发了一桩暗藏在深处的阴谋。这本书的每一章都是一个故事片段,同时会引入一个新的算法概念。为了加深大家对算法基础知识的了解,在每章的结尾处都会回顾并详细描述本章内出现的算法知识。

按照章节顺序,在本书中出现的算法或数据结构包括:穷举搜索、数组、字符串、二分搜索、广度优先搜索、深度优先搜索、栈、队列、并行算法、迭代加深、逆向索引、二叉搜索树、trie树、最佳优先搜索、优先队列、启发式搜索、堆。下面是对这些概念的简单解释:

穷举搜索:在整个搜索空间内尝试每一种可能性。
数组:一个数组就像一排箱子一样,每个箱子可以存储一条信息。
字符串:由一系列字符组成,这些字符可以是字母、数字、符号或空格。
二分搜索:其工作原理是不断地将搜索空间分成两半,并且把搜索空间限制在其中的一半中。
广度优先搜索:是一个按顺序依次尝试可能的搜索选项的算法,它每次都会选择尝试首先发现的但还没有尝试过的选项。
深度优先搜索:优先考虑最近新遇到的搜索状态,它会沿着一条路往下走,直到遇到目标状态,或者是一条死路。
栈:是一个后入先出的数据结构。
队列:是一个先入先出的数据结构。
并行算法:将一个问题分成数个小块,并同时在这些小块上执行计算,最后再将结果组合起来。
迭代加深:是深度优先搜索的一种改版,它限制了每一次搜索的深度,在第k轮搜索的时候,这个算法会执行一次深度限制为k的深度优先搜索。
逆向索引:它和书的索引类似,对于每一个值,逆向索引可以告诉你这个值在数据中的哪些地方出现过。
二叉搜索树:它是一种数据结构,它存储信息的方式和二叉搜索中使用信息的方式类似,树中的每一个节点存放一个值,并且每个节点最多有两个子节点,左子节点中存放的值都比当前节点中的值小,右子节点中存放的值都比当前节点中的值大。
trie树:是基于树的数据结构,用户可以很方便地通过某个字符串的前缀来搜索到目标字符串。
最佳优先搜索:是基于某种估值分数或者评价函数来选择接下来探索哪个状态的算法。
优先队列:它让你能插入数据,然后按特定的顺序删除数据。
启发式搜索:依据经验来帮助算法快速达到目标。
堆:是基于二叉搜索树的数据结构,它的每个节点与其子节点之间需要时刻维持有序关系;具体而言,对于最大堆,树中的任意一个节点的值都要大于(或等于)其下面的所有节点。

看完了这本书,我的体会有这几个:
第一,一本好的书就是要让其内容具备趣味性,让读者能够有继续读下去直到读完(甚至读好几遍)的理由。
第二,算法不光只是存在于计算机科学的研究和实践中,在我们的生活中,算法也是无处不在的。大到做一个人生中的重要决定,小到买菜购物,背后的指导思想都是算法。
第三,解决一个问题的方法往往不止一种,我们要根据实际情况选择合适的方法,但这个方法可能不是最优的。

《算法神探》,一本具备趣味性和知识性的计算机科普读物,推荐给大家阅读!


欢迎大家扫码加入我的小蜜圈:

无处不在的算法---《算法神探》读后感相关推荐

  1. 互联网无处不在的“推荐算法”解析

    互联网无处不在的"推荐算法"解析 摘要: 数据显示,三分之一的用户会根据电子商务网站的推荐买东西,这是任何广告都不可能做到的成绩.媒体上播放的大众化广告对消费者的影响已经越来越低, ...

  2. 《算法帝国》读后感(一)

    <算法帝国>读后感(一) By Xchen 20160710 本书作者是克里斯托弗•斯坦纳,讲述算法与机器学习如何改变人类社会,带我们走进一个算法统治的世界.由于这本书激发了我对于算法的好 ...

  3. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据

    一致性哈希算法--算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据 参考文章: (1)一致性哈希算法--算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据 (2)http ...

  4. 【机器学习】通俗的k-近邻算法算法解析和应用

    [机器学习]通俗的k-近邻算法算法解析和应用 文章目录 1 概述 2 KNN 场景 3 KNN 原理 4 实例:改进约会网站的配对效果 5 算法总结 6 KNN算法的优缺点 7 图像分类应用 1 概述 ...

  5. ML之DT(树模型):DT(树模型算法)算法的简介、代码定义、案例应用之详细攻略

    ML之DT(树模型):DT(树模型算法)算法的简介.代码定义.案例应用之详细攻略 目录 树模型 1.A brief history of forests 2.树模型的复杂度 3.树模型的目标函数

  6. 数据结构与算法 -- 算法

    一.算法的基本概念 算法是指对解题方案准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制. 算法中的指令描述的是一个计算过程,在它的作用下,系统从初始状态和初始 ...

  7. 层次聚类算法 算法_聚类算法简介

    层次聚类算法 算法 Take a look at the image below. It's a collection of bugs and creepy-crawlies of different ...

  8. 初识推荐算法---算法背景、算法概念介绍、推荐信息选取、常用推荐算法简介

    初识推荐算法 算法背景 推荐系统的基本概念 哪些信息可以用于推荐 常用的推荐系统算法 算法背景 推荐系统是根据用户的浏览习惯,确定用户的兴趣,通过发掘用户的行为,将合适的信息推荐给用户,满足用户的个性 ...

  9. 【5】数据结构与算法--- 算法 进阶

    第 4 章 算法 进阶 4.1 排序 4.1.1 排序算法简介 排序:把无序的队列变成有序的队列 排序算法:排序算法是一种将一串无规律数据依照特定顺序进行排列的一种方法或思路. 排序算法的稳定性:队列 ...

  10. 补学图论算法:算法竞赛入门经典(第二版)第十一章:

    补学图论算法:算法竞赛入门经典(第二版)第十一章: 倒排索引还没有实现! 下面是左神的图论算法,并查集笔记.和一个美团题目. ''' https://www.nowcoder.com/live/11? ...

最新文章

  1. day06:02oracle体系结构_存储结构
  2. 动态毛玻璃特效html,js和CSS3炫酷毛玻璃面板特效
  3. POI读取Excel文件时,row.getCell(0).getStringCellValue()报错:数字转换异常
  4. ICCV 2019 | 港大提出视频显著物体检测算法MGA,大幅提升分割精度
  5. AJAX04 JQ的AJAX
  6. Junit使用方法总结
  7. 如何在Mac上更改声音输出设置呢?
  8. 【手势识别】基于matlab肤色静态手势识别【含Matlab源码 288期】
  9. Keil(MDK) 5 软件安装教程
  10. Mybatis在XML中写SQL比较运算符<=时报错解决方法
  11. 虽然不舍但是事实 —— 纪念下 JavaEye
  12. python三维点云投影(二)
  13. webpack v4 常用配置(以配置vue ssr的webpack为例)
  14. html5理财计算,理财收益怎么算(一般理财产品的收益计算方法)
  15. 企业信用等级重不重要?看看各地招标文件就知道了。
  16. 正则的replace方法详解
  17. 清华大学NLP实验室刘知远教授组与华为合作招聘博士后
  18. LTE 随机接入 --(1)流程
  19. 2015.7.8(千股跌停!做T不应当只做中色,中国软件)
  20. 给Date日期加上时分秒

热门文章

  1. 重磅!百度怒告前高管王劲,真实原因竟然是因为....
  2. 我与python第一次亲密接触
  3. 还不懂Binder的原理?你损失了一张腾讯offer
  4. 函数加密_同态加密__密码学课堂笔记
  5. 2022年3月PMP考试时间定了 ---「3月27日」
  6. java向上转型_Java向上转型
  7. 一起设计一个Android倒计时组件
  8. xshell怎么远程linux系统,Xshell怎么远程桌面连接Linux系统?
  9. TCP/IP协议栈 头部参数
  10. 音频和语音处理领域CCF期刊和杂志