楼主: pipihappy8888

【案例讨论】原来算法这么简单:《啊哈!算法》有奖试读(已公布获奖)

[复制链接]
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:42:02秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:51:162015年中国系统架构师大会纪念徽章
日期:2015-09-16 12:54:392014系统架构师大会纪念章
日期:2015-09-16 12:54:392013系统架构师大会纪念章
日期:2015-09-16 12:54:392012系统架构师大会纪念章
日期:2015-09-16 12:54:392011系统架构师大会纪念章
日期:2015-09-16 12:54:392010系统架构师大会纪念
日期:2015-09-16 12:54:39秀才
日期:2015-12-25 15:31:10
41#
发表于 2014-6-24 10:06 | 只看该作者
Kenniu 发表于 2014-6-24 08:25
搞得有些复杂了...

还行吧,我见过更加复杂的。我看了其他人说的也不简单啊。

使用道具 举报

回复
论坛徽章:
0
42#
发表于 2014-6-25 09:08 | 只看该作者
我买过一本
大话数据结构
感觉还不错
两者好像差不多

使用道具 举报

回复
论坛徽章:
151
授权会员
日期:2005-11-16 17:49:25世界杯纪念徽章
日期:2006-07-20 13:19:20ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:龙
日期:2008-11-25 11:15:28生肖徽章2007版:羊
日期:2009-06-02 18:18:38生肖徽章2007版:鼠
日期:2009-06-17 22:01:192010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:科特迪瓦
日期:2010-06-11 19:25:562010广州亚运会纪念徽章:网球
日期:2010-12-31 16:37:522010广州亚运会纪念徽章:藤球
日期:2011-01-02 15:47:20
43#
发表于 2014-6-26 21:22 | 只看该作者
1.排序的算法有很多,冒泡排序、计数排序、插入排序、归并排序和堆排序等,请问这些主流算法的思路是怎样的?各有什么优缺点?请结合应用场景谈谈您的看法。

冒泡排序:分成已排好序和未排序两个表,每一次从未排序集合中挑出其中一个极值,放入已排序序列表尾部。

计数排序:假设输入的待排序表元素都是0到k之间的整数,排名小于某个元素a的个数为n,则直接把该元素a放到第n+1个位置上;

插入排序:将一个数据插入到已经排好序的有序表中,从而得到增加了一个数的有序数据表;

归并排序:两个(或两个以上)有序表合并成一个新的有序表;

堆排序:二叉树上的根节点和叶子构成椎,根上放极值,左右叶子有大小关系,利用这个规则进行重新分堆;

2.栈和队列有哪些区别?它们有哪些作用?适用于哪些应用?

栈是后入栈的要先出。队列是排先头的要先出。

3.请谈谈您对深度优先搜索法和广度优先搜索法这两种算法的理解,可以举例说明。

深度优先:垂直搜索优先;在一个家族中先查完一家再下一家。

广度优先:横向搜索优先;在一个家族中先查完最老的同一辈人,再查下一代的同一辈人。

4.说说读完试读章节后您的感想。
趣味游戏,算法之美。

使用道具 举报

回复
论坛徽章:
6
2014年新春福章
日期:2014-02-18 16:50:09马上有车
日期:2014-02-18 16:50:09优秀写手
日期:2014-05-29 05:59:082015年新春福章
日期:2015-03-04 14:55:132015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-09-18 17:02:34
44#
发表于 2014-7-1 09:10 | 只看该作者
呵呵,看起来不错,当年算法一直没入门。
所以自然c语言也就没搞好

使用道具 举报

回复
求职 : 数据分析/ETL
论坛徽章:
1
2014年世界杯参赛球队: 葡萄牙
日期:2014-07-24 11:03:54
45#
发表于 2014-7-7 20:19 | 只看该作者
本帖最后由 sunny1889 于 2014-7-14 16:00 编辑

1.排序的算法有很多,冒泡排序、计数排序、插入排序、归并排序和堆排序等,请问这些主流算法的思路是怎样的?各有什么优缺点?请结合应用场景谈谈您的看法。

冒泡排序:进行n-1排序,第一次排序先找出最小的数字,放在第一个位置,然后在剩余的数字中再找出最小的数字,放在第二个位置上,依次类推,可以排出所有的数字。
计数排序:计数排序假设n个输入元素中的每一个都是介于0到k之间的整数(k为整数),对每一个输入元素x,确定出小于x的元素个数。有了这一信息就可以直接将元素放到该放的地方了。
插入排序:使用扩大有序区缩小无序区的方法实现排序,插入排序是按照顺序遍历无序区的元素,并且将它们挨个插入到有序区中,就好比是打扑克时的插扑克的操作一样。
归并排序:是建立在归并操作上的一种排序算法,要理解归并排序在于理解要排序数列的更新过程,(1和2按有序合并)---(1,2和3,4按有序合并)---(1,2,3,4和4,5,6,7按有序合并)---...)
堆排序:堆可以被视为一个完全二叉树,树的每一层都填满,最后一层除外。堆排序即每次将根结点放入数组最后一位,然后使堆的长度减一,循环直至堆的长度为1。堆排序常见应用:处理优先级队列。



2.栈和队列有哪些区别?它们有哪些作用?适用于哪些应用?

栈先进后出,队列先进先出。栈是限定只能在表的一端进行插入和删除操作的线性表。队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
定义栈和队列数据结构是为了保存遍历所经过的路径,亦即保存遍历过程中的每一个结点的信息。
铁路调度中用到栈,民航机票订购中用到队列。



3.请谈谈您对深度优先搜索法和广度优先搜索法这两种算法的理解,可以举例说明。
以树的搜索为例,深度优先搜索法是优先扩展尚未扩展的且具有最大深度的结点;广度优先搜索法是在扩展完第K层的结点以后才扩展K+1层的结点。



4.说说读完试读章节后您的感想。

Aha! GoodJob! 哪怕是完全不懂计算机科学的读者,也可以快速地了解计算机科学中最具魅力最重要的部分——算法。即使对于文科生、或者小资白领而言,也可以学习到当今最热门的一种思维方式——与“理论思维(逻辑推导)”、“实验思维(实证分析)”并列的——“计算思维”的精髓。计算机系课程当中,算法课堪称难度最高的课程之一。各种算法的复杂度分摊、组合分析什么的,绝对能把学这门课的人难哭。但这还不是最惨的,最惨的是,在含泪搞定习题和分析之后,发现自己根本就没明白算法的动机和原理。然而,这种只见树木不见森林的事,在计算机系学生身上往往很常见。试读了第一章,主要讲解了几种排序,感觉作者讲的比较生动,容易理解,觉得这是一本非常有趣的算法书,诙谐的语言、友爱的插画以及好玩的例子。试读章节给我的感觉是:

1.语言生动活泼。技术书籍往往令人乏味,但是该书读起来让人轻松,有共鸣。如“举个栗子”,“一大波数向你靠近”等。

2.图文并茂,用轻松直观的方式把算法描述清楚;插图近似漫画风格、风趣形象。插图有利于对内容的理解,并可以让读者短暂的休息大脑,提高阅读的乐趣。

3.挑选的算法都是实用且基础的算法,为深入学习后续内容打好根基;案例循序渐进,精心挑选。从问题入手,抛出问题后,给予算法的解答,将解答和生活中的例子进行类比,如“冒泡排序”和排队照相时的交换位置,使得理解更加容易。在分析一个算法的弱点后,给出改进后的算法,使得算法之间的优劣和算法的改进发展历程更加清晰。

4.算法的效率分析简单明了。即使小学、初高中以上读者即可理解。因此该书可作为参加青少年信息学竞赛的同学入门和训练书。也可以作为大学生ACM程序设计竞赛的补充读物。也可以作为高等学校信息类专业算法课程的课外读物。

5.背景知识介绍得较为全面,这对了解算法产生的动机和各算法之间的关系、建立整体印象来说十分重要。大牛的趣味轶事很有趣。书中穿插的故事,如高德纳,迪杰斯特拉等,能够让读者了解大神们的神来之笔和趣事。

感觉该书目的是轻松描述算法,不过有些网络用词,例如“东东”,容易让读者对本书价值印象大打折扣,也许其它章节有所改观。但是作为科普读物来读,质量在这个级别算是上乘。


使用道具 举报

回复
论坛徽章:
0
46#
发表于 2014-7-8 14:11 | 只看该作者
支持一下。。。

使用道具 举报

回复
论坛徽章:
4
2016猴年福章
日期:2016-02-23 09:58:34猴赛雷
日期:2016-02-23 10:00:05
47#
发表于 2014-7-14 19:16 | 只看该作者
1.排序的算法有很多,冒泡排序、计数排序、插入排序、归并排序和堆排序等,请问这些主流算法的思路是怎样的?
各有什么优缺点?请结合应用场景谈谈您的看法。
至于这些算法,实在没什么好说的。在数据结构中都有了较深入的阐述。
或者,在深入点研究学习的话,可以看看《多维与度量数据结构基础》这本书也挺不错。
关于上面的算法,只进行以下总结:
冒泡:容易实现,方便理解,轻量级的数据排序效果好。
插入排序:也使用于小数据的排序。
选择排序:我学会了怎么去获得最大值,最小值等方法。
合并排序:我学会分而治之的方法,而且在合并两个数组的时候很适用。
堆排序:可以用它来实现优先队列,而且他的思想应该给我加了很多内力。
快速排序:本来就用的最多的排序,对我的帮助大的都不知道怎么说好。
具体看一下CU 的博客:
http://blog.chinaunix.net/uid-26854432-id-3213723.html

2.栈和队列有哪些区别?它们有哪些作用?适用于哪些应用?
一个是FIFO,一个是FILO,学过计算机的都知道,不细说。
至于用途也比较典型:
队列,用于对某资源获取来进行限制的一种方式
而,栈:更多的用途是在递归上。

3.请谈谈您对深度优先搜索法和广度优先搜索法这两种算法的理解,可以举例说明。
这个用"宗谱"来说比较好理解,例如说出家族里从爷爷后代所有人的名字。
一般来说都会按照广度遍历:爷爷,大爷,二大爷..叔叔,哥哥....弟弟等等顺序。
要说深度优先遍历的话,路径连通问题上运用的较多。
例如,要你说出从北京到上海之间最少停泊的到达路径,你还会用广度搜索么?显然你不是傻子..

4.说说读完试读章节后您的感想。
作者跑开了传统教材的死板描述,更加人性化的描述了算法。
相信后面的章节的内容会更加吸引观众

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2013-12-18 09:29:09
48#
发表于 2014-7-25 11:36 | 只看该作者
已入+字数补丁

使用道具 举报

回复
论坛徽章:
5
2015年新春福章
日期:2015-03-04 14:55:132015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2015-09-10 17:13:35秀才
日期:2015-09-10 17:18:24秀才
日期:2015-10-08 17:57:58
49#
发表于 2014-7-29 16:49 | 只看该作者
没看  算法的知识点也就那么一些,但是真的要用起来 ,一阵凌乱啊、

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表