和老规矩一样,本月月考的奖品就是《写给大家看的算法书》两本


不知道什么是月考的同学,请补习下面文章: 每月送书活动来袭,免费哦! 另外,为了避免每次月考都是相同的同学获得最高奖,从上次月考开始,获得过最高奖(得到过书)的同学,将不能获得最高奖,也就是说 一个人只能获得一次最高奖


规则就说到这里,下面是书籍介绍

————————————割———————————————— 【日】杉浦 贤 著 绝云 译 ISBN 978-7-121-28744-2 2016年6月出版 定价:59.00元 192页 16开 编辑推荐 本书的主旨是从基础开始详尽地讲解算法,将复杂的算法知识点与轻松有趣的漫画故事结合


对初学者来说,还有什么比生动有趣的比方,更能记住新概念的呢! 内容提要 算法这个词对于非计算机从业人士而言,似乎就是晦涩、神秘的代名词


其实,算法在日常生活中随处可见

做饭用的菜谱是一种算法、查字典的方法是一种算法、给期中考试分数排名也用到了算法


事实上,算法可以说是这个信息爆炸的时代所依存的重要基石之一

《写给大家看的算法书》对于理解信息处理的基础——算法而言,是一本非常优秀的入门读物


作者采用大量生动的类比,配合简洁易懂的配图,深入浅出地讲解算法,极大地拉近了读者与算法的距离


通读全书,读者可以了解到计算机编程与算法的基本理念,也能对简单常用的算法有一个大概的理解


目录 第1 章 什么是算法  1 1.1 算法其实就在身边 2 1.2 算法是人类智慧的结晶 4 1.3 了解算法对玩游戏有帮助吗 6 1.4 算法有两个必要条件 8 1.5 要特别了解的重要算法 10 专题1 算法基础之结构化编程思想 12 第2 章 变量和数组  13 2.1 所谓“数据”,就是各种各样的信息 14 2.2 数据有不同的类型 16 2.3 最基础的数据是“值” 18 2.4 装着“值”的盒子叫作“变量” 20 2.5 要描述算法,变量是不可或缺的 22 2.6 所谓“代入”,指的是把数据赋予变量 24 2.7 不同的变量有不同的名称 26 2.8 变量命名要能解释变量装载的数据 28 2.9 把数据代入变量的赋值语句 30 2.10 把变量中存储的值代入其他变量 32 2.11 变量也有数据类型 34 2.12 保存大量同一数据类型值的“数组” 36 2.13 数组用“数组名”标记 38 2.14 数组的元素用“下标”管理 40 2.15 什么时候需要用到“数组”呢 42 2.16 “数组”就像储物柜一样 44 2.17 “二维数组”就像是旅馆里的房间 46 2.18 二维数组的各个元素用两个下标来管理 48 2.19 字符串就是字符的连续拼合(数组) 50 2.20 获取字符串长度的两个方法 52 专题2 常用变量命名 54 第3章 数据结构  55 3.1 为了高效处理大量数据 56 3.2 有哪些常用的数据结构 58 3.3 “堆栈”类似于桌面上堆积的书 60 3.4 “队列”就像是超市收银台前排着的队列 62 3.5 “链表”就像用绳子串起来的长串 64 3.6 只能检索下一个数据的单向链表 66 3.7 能检索上一个或者下一个数据的双向链表 68 3.8 能快速定位第N 个数据的是“数组” 70 3.9 能快速插入、删除数据的是“链表” 72 3.10 像钟表一样数据首尾相连的是“环形缓冲区” 74 3.11 管理有树干、树枝、树叶一样关系的数据的是“树” 76 3.12 一个父节点对应两个子节点的是“二叉树” 78 3.13 像笔画的节点和连线组成的数据结构是“图” 80 专题3 为什么数组的起始下标有时是0,有时是1 ? 82 第4章 学习算法基础  83 4.1 循环处理是算法的基础 84 4.2 计算1 ~N 的整数的总和 86 4.3 使用数组可以高效地处理大量数据 88 4.4 计算一年的营业额 90 4.5 求班级考试的总分和平均分 92 4.6 求最高分 94 4.7 求最低分 96 4.8 为考试成绩排名 98 4.9 求全班学生不同科目考试合计的总分 100 4.10 求“时分秒”形式的时间差 102 4.11 交换两个变量值的技巧 104 4.12 求两个数值的最大公约数 106 专题4 2038 年的时候要留心? 108 第5 章 排序算法  109 5.1 排序是指对多个数据排列顺序 110 5.2 关于排序算法 112 5.3 使用“木桶”辅助的“桶排序” 114 5.4 每次找出一个最小(最大)值的“选择排序” 116 5.5 像冒泡一样进行相邻数据的交换的“冒泡排序” 118 5.6 向有序数据里正确位置插入数据的“插入排序” 120 5.7 把几个有序数据合并叫作“归并” 122 5.8 利用归并进行排序的算法叫作“归并排序” 124 5.9 改进了排序效率的“希尔排序” 126 5.10 最快的排序算法“快速排序” 128 专题5 把2 的n 阶乘的值记下来吧 130 第6 章 搜索算法  131 6.1 所谓“搜索”,就是从数据集合中找到目标数据 132 6.2 从头开始按顺序排除的搜索叫作“线性搜索” 134 6.3 可以进行高速搜索的“二分搜索” 136 6.4 利用哈希表实现高效搜索 138 6.5 在字符串中搜索部分字符串的“字符串搜索” 140 6.6 高效搜索字符串的KMP 算法 142 6.7 逆向比较的BM 字符串搜索算法 144 专题6 在关系型数据库中使用到的排序和搜索 146 第7 章 其他算法  147 7.1 用牛顿法求解高次方程 148 7.2 用高斯消元法求解方程组 150 7.3 用梯形面积和来求解定积分的梯形法 152 7.4 计算质数的埃拉托斯特尼筛法 154 7.5 执行时调用自身的递归函数 156 专题7 算法和流程图 158 第8 章 算法和计算机  159 8.1 计算机的数据是用二进制来表示的 160 8.2 让二进制数更易于阅读(八进制、十六进制) 162 8.3 二进制转换成十进制 164 8.4 十进制转换成二进制 166 8.5 用二进制表示负整数 168 8.6 逻辑或:任意一个为“1”则结果为“1”  170 8.7 逻辑并:同时为“1”则结果为“1” 172 8.8 “或非”:“1”和“0”得到的结果为“1” 174 8.9 “否定”:“1”变为“0”,“0”变为“1” 176 8.10 使用德摩根定律可以管理否定范式 178 精彩节摘 记得有一次,朋友读书时看见了“维恩图”一词,不明白它的意思,于是跑来问我


当时,我大致是这么回答的:“假设有若干个元素,同时还有若干种性质


为了直观地表现出哪些元素具有哪些性质,我们可以在平面上画出若干个封闭曲线,每个封闭曲线内的区域代表某种性质,然后把各个元素填写在正确的区域里


如果某个元素同时具有两个或多个性质,那就必须把它填写在相应的两个或多个区域的公共部分里


所以,我们要求这些封闭区域必须恰当地相交,使得每种可能的公共部分都存在


” 看见朋友一副茫然的表情,我只好找来纸和笔,举了一个实际的例子:“如果这三个圆形区域分别代表‘奇数’、‘质数’、‘平方数’,那么1 就该填到这儿,2 就该填到这儿,3 就该填到这儿……” 朋友忽然兴奋地说:“哦,我好像懂了!维恩图的意思是不是就是,当我想知道眼前的一群人是一群什么样的人时,我就在地上画几个圈,分别表示‘已婚’、‘党员’、‘上班族’,等等,然后每个人属于哪些类就站进哪些圈子里,而且我在地上画的圈需要保证,不管来了什么样的人,他总能找到个地儿站!” “没错没错,就是这样!”我激动地说道,仿佛恍然大悟的是我一样


类似的经历我还遇到过一次,只不过我的位置换了一下

你知道吗?在现实生活中可能出现某些商品,它的价格升高时,人们的购买量也随之增加


这样的商品叫作“吉芬商品”

很有趣吧!很想搞明白这背后的原理吧!第一次听说这样的经济学现象后,我也感到非常好奇,我也很想知道这背后的原理


我在网上查到了很多与此相关的文章,它们的标题大多类似于“吉芬商品背后的直观解释”


每篇文章里都出现了同一个生词,“无差异曲线”
不管阅读哪篇文章,我都会卡在这个生词处

什么是无差异曲线?这看起来似乎是经济学中的一个非常基本的东西,因为几乎所有作者在讲解时,都会假设读者已经知道了它的意思


无奈,我又开始搜寻“无差异曲线”的意思,结果仍然是一头雾水


大多数地方给出的解释是这样的:“一条条从左上方延伸到右下方的曲线,说明消费者的偏好不变时,若其中一种商品的消费增加,另一种商品的消费会如何减少……同一条曲线上面的每一点对应的商品组合是不同的,但是人们从中得到的效用却是相同的


”对于从没接触过经济学的人来说,这样的句子简直如天书一般

最后,借来一本经济学教材,研究了里面的好几个例子,才让我茅塞顿开:唉,说得这么麻烦干什么,无差异曲线其实就是购买不同数量的A 和B,给人带来的满足感的“等高线”嘛!懂得什么是无差异曲线之后,再看吉芬商品的讲解文章时,就完全没有障碍了


学习一门新的学科,往往会遇到很多新的概念

不幸的是,专家们对这些概念太过熟悉,很难意识到这会成为初学者理解的障碍;即使意识到了这一点,恐怕一时也很难想到一种真正面向初学者的、简单直白一语中的的解释;即使想到了这样的解释,综合考虑文体、篇幅等原因,或许也不会真的写下来


种种经历让我深知,填补这个空白是很有必要的

但是,谁来填补这个空白呢? 幸运的是,现在,编程初学者有了像《写给大家看的算法书》这样的书


学习编程变得简单多了

数组,其实就是一排印有号码的储物柜;堆栈,其实就是桌面上堆积的书……书中充满了这些生动有趣的比方,它们总能让我由衷地感叹:这比方打得实在是太贴切了


《写给大家看的算法书》里还会谈到一些更基本的问题

为什么依次执行X ← Y 和Y ← X 不能交换两个变量的值?这是因为,往变量里代入值的时候,旧的值是会被覆盖掉的


在专业的程序员看来,这几乎是废话;但谁能想到,或许恰恰就是这句“废话”,解答了某个初学者百思不得其解的困惑


你是否读过很多编程入门读物,但仍然觉得有门槛?那么,这本书值得你尝试


在信息化和大数据的背景下,人们的思维也或多或少地受到了计算机模型的影响,讨论问题时“树”、“节点”、“字符串”等词常常是张口就来


如果由于学习或者工作的原因,你时不时地会遇到这些陌生的词汇,相信这本书也会对你有帮助


数学科普作家 顾森 媒体评论 我阅读的第一本出自日本的计算类技术书籍是欧姆社的《漫画数据库》,这种全篇漫画风格的技术书让我很是喜欢


来自漫画大国的本书,同样以轻松有趣、通俗易懂的漫画与故事的方式将抽象复杂的算法融会其中


——啊哈磊,《啊哈C!思考快你一步:用编程轻松提升逻辑力》作者 算法源于生活,基于数学,成于计算


作者以独特的视角,优美的手法,把我们带入一个不一样的算法世界,在这里算法可以如此生动有趣,谈笑间算法被剖析得淋漓尽致,读者更能领会到算法的精妙之处


本书针对常见的排序、搜索算法进行了细致地讲解,此外对牛顿法、高斯消元等算法的讲解也恰到好处,适合于作为算法的入门读物


——游皓麟,高级数据分析师 作为一名产品经理,是应该懂一些技术原理的,这是对研发和职业的尊重


产品经理并不一定会写代码,但是一定要知道每个实现背后的原理,这会让产品经理不至于提很多被研发从内心嘲笑的需求,也可以让产品经理开阔视野


本书可以算是一本写给产品经理看的技术书,值得所有非技术出身的产品经理读一读


——KentZhu,易到用车副总裁 前言 计算机自20 世纪发明以来得到了飞速的发展,在21 世纪的现代社会,不仅仅是个人计算机,智能手机、电视、电子照相机、游戏机等预装计算机的设备也越来越普及


甚至,地铁的自动刷卡设备、ATM 自动柜员机、自动贩卖机等现代社会生活中不可或缺的机器,如果没有了计算机,那么机器的控制、顾客的管理、财务的管理、售卖的管理等各种各样的公司业务全都开展不了


为了编写在计算机上可以良好运行的程序,我们必须学习“算法”


本书的主旨就是从基础开始详尽地讲解算法

为了让初学者也能充分理解内容,“尽可能通俗易懂”,笔者尽量让大家在轻松学习算法的同时,也可以尝试理解计算机编程中用到的一些思维方式


另外,为了让中学生也能轻松阅读,本书虚构了埃里根博士、小艾、小莉这三个角色,对算法相关的知识进行讲解


请把自己想象成小艾或者小莉,尝试在埃里根博士的算法讲座中学习吧


第1 章 探讨了“什么是算法”这个话题

算法这个词汇可能大家日常生活中接触不多,所以乍听之下会有晦涩艰深的感觉


但简单来说,算法就是“为解决特定问题需要进行的处理步骤”
本章为讲解得更通俗易懂,拿日常生活中的菜谱做类比

第2 章 主要对描述算法的重要元素“数据”进行讲解,包括数据的存、取方法等


另外,本章也对在算法表示问题解决步骤时所必需的“变量”进行讲解,本章详细讲解了它作为数据存储的“盒子”的特征


第3 章 讲述了对各种不同形式的数据进行管理的“数据结构”这种管理方式


本章还对其中的特例,如“数组”、“链表”、“树”等数据结构各自的优缺点进行了讲解


第4 章 介绍了算法中记述处理步骤的最重要的要素“循环”及使用“循环”进行复用处理的方法


第5 章 介绍了最重要的算法之一“排序”

本章从低效但简单的排序处理讲起,由浅入深讲解复杂但高效的排序处理


第6 章 介绍了另一类最重要的算法——“搜索”

本章会讲述单纯的搜索、已排序的数据的搜索,以及字符串的搜索等


第7 章 介绍一些解决数学问题的算法

本章主要讲解了可以在科学计算领域派上用场的“求解高斯方程”、“求解方程组”及“求定积分的值”等算法


第8 章 探讨了“算法和计算机”这个话题
主要解释了一些为实现算法需要了解的计算机相关的基础知识

通读本书,如果读者能够稍稍消除“算法是什么呀”这种顾虑,并且产生“原来如此,探究起来,计算机程序就是由一些简单的处理组合起来的东西啊”这样的想法的话,那真是笔者的荣幸


另外,如果本书的内容能成为大家以后熟悉计算机后编写良好、高效的程序的基础的话,那我真是太开心了


2012 年11 月 杉浦贤



欢迎投稿 职场/创业方向. 邮箱wangfzcom(AT)163.com:王夫子社区 » [每月好书] 写给大家看的算法书(来自漫画帝国的图解算法书:轻松掌握数据处理关键点)

    标签:

点评 0

评论前必须登录!

登陆 注册