请选择 进入手机版 | 继续访问电脑版
  • 提示:管理员还未添加网站公告/此处公告受影响无法显示!
 找回密码
 立即注册
查看: 19880|回复: 8

《大话数据结构(作者:程杰)》高清PDF免费下载

[复制链接]
  • TA的每日心情
    开心
    2020-12-22 07:11
  • 签到天数: 21 天

    [LV.4]高级软件工程师

    740

    主题

    809

    帖子

    2663

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    2663
    发表于 2018-11-6 12:03:35 | 显示全部楼层 |阅读模式
    大话数据结构.jpg

    PDF下载地址:http://pdf.ebook23.com/ebook/1_J ... %BB%93%E6%9E%84.pdf

    作者:  程杰
    出版社: 清华大学出版社
    出版年: 2011-6
    页数: 440
    定价: 59.00元
    装帧: 平装
    丛书: 大话系列
    ISBN: 9787302255659


    作者简介  · · · · · ·

    一个被读者誉为很适合写IT技术书的家伙。《大话设计模式》作者。此书07年末出版至今已经简体版印刷9次、繁体版印刷6次,取得了较好的成绩,开创了一种适合国人阅读的趣味讲解IT知识的风格模式。其本人参与过政府、证券、游戏、交通等多种行业的软件开发及项目管理工作,也曾做过软件培训的教师。因曾有过两年半高中数学教学的独特经历,使得其书作当中处处以初学者视角考虑和分析问题,他成为了当前很受欢迎的IT技术图书作者之一。

    博客:http://cj723.cnblogs.com

    微博:http://weibo.com/cj723

    Email:chengjielong@163.com


    内容简介  · · · · · ·

    本书为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。

    本书以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇?一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。


    目录  · · · · · ·第1章数据结构绪论 1
    1.1开场白 2
    如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。
    1.2你数据结构怎么学的? 3
    他完成开发并测试通过后,得意地提交了代码。项目经理看完代码后拍着桌子对他说:“你数据结构是怎么学的?”
    1.3数据结构起源 4
    1.4基本概念和术语 5
    正所谓“巧妇难为无米之炊”,再强大的计算机,也要有“米”下锅才可以干活,否则就是一堆破铜烂铁。这个“米”就是数据。
    1.4.1数据 5
    1.4.2数据元素 5
    1.4.3数据项 6
    1.4.4数据对象 6
    1.4.5数据结构 6
    1.5逻辑结构与物理结构 7
    1.5.1逻辑结构 7
    1.5.2物理结构 9
    1.6抽象数据类型 11
    大家都需要房子住,但显然没钱考虑大房子是没有意义的。于是商品房就出现了各种各样的户型,有几百平米的别墅,也有仅两平米的胶囊公寓……
    1.6.1数据类型 11
    .1.6.2抽象数据类型 12
    1.7总结回顾 14
    1.8结尾语 15
    最终的结果一定是,你对着别人很牛的说“数据结构——就那么回事。”
    第2章算法 17
    2.1开场白 18
    2.2数据结构与算法关系 18
    计算机界的前辈们,是一帮很牛很牛的人,他们使得很多看似没法解决或者很难解决的问题,变得如此美妙和神奇。
    2.3两种算法的比较 19
    高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家……
    2.4算法定义 20
    现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决此类问题很优秀的算法却未必就适合它。
    2.5算法的特性 21
    2.5.1输入输出 21
    2.5.2有穷性 21
    2.5.3确定性 21
    2.5.4可行性 21
    2.6算法设计的要求 22
    求100个人的高考成绩平均分与求全省所有考生的成绩平均分在占用时间和内存存储上有非常大的差异,我们自然追求高效率和低存储的算法来解决问题。
    2.6.1正确性 22
    2.6.2可读性 23
    2.6.3健壮性 23
    2.6.4时间效率高和存储量低 23
    2.7算法效率的度量方法 24
    随着n值越来越大,它们在时间效率上的差异也就越来越大。好比有些人每天都在学习,而另一些人,打打游戏、睡睡大觉,毕业后前者名企争着要,后者求职处处无门。
    2.7.1事后统计方法 24
    2.7.2事前分析估算方法 25
    2.8函数的渐近增长 27
    2.9算法时间复杂度 29
    理解大o推导不算难,难的其实是对数列的一些相关运算,这考察的更多的是数学知识和能力。
    2.9.1算法时间复杂度定义 29
    2.9.2推导大o阶方法 30
    2.9.3常数阶 30
    2.9.4线性阶 31
    2.9.5对数阶 32
    2.9.6平方阶 32
    2.10常见的时间复杂度 35
    有些时候,告诉你某些东西不可以去尝试,也是一种知识的传递。总不能非要去被毒蛇咬一口才知道蛇不可以去招惹吧。
    2.11最坏情况与平均情况 35
    2.12算法空间复杂度 36
    事先建立一个有2050大的数组,然后把所有年份按下标数字对应,如果是闰年,此数组项的值就是1,如果不是就是0。这样,所谓的判断某一年是否是闰年就变成了查找这个数组的某一项的值是多少的问题。
    2.13总结回顾 37
    2.14结尾语 38
    愚公移山固然可敬,但发明炸药和推土机,可能更加实在和聪明。
    第3章线性表 41
    3.1开场白 42
    门外家长都挤在大门口与门里的小孩子的井然有序,形成了鲜明对比。哎,有时大人的所作所为,其实还不如孩子。
    3.2线性表的定义 42
    3.3线性表的抽象数据类型 45
    有时我们想知道某个小朋友(比如麦兜)是否是班级的同学,老师会告诉我说,没有,麦兜是在春田花花幼儿园里。这种查找某个元素是否存在的操作很常用。
    3.4线性表的顺序存储结构 47
    他每次一吃完早饭就冲着去了图书馆,挑一个好地儿,把他书包里的书,一本一本的按座位放好,长长一排,九个座硬是被他占了。
    3.4.1顺序存储定义 47
    3.4.2顺序存储方式 47
    3.4.3数据长度与线性表长度区别 48
    3.4.4地址计算方法 49
    3.5顺序存储结构的插入与删除 50
    春运时去买火车票,大家都排队排着好好的,这时来了一个美女:“可否让我排在你前面?”这可不得了,后面的人像蠕虫一样,全部都得退后一步。
    3.5.1获得元素操作 50
    3.5.2插入操作 51
    3.5.3删除操作 52
    3.5.4线性表顺序存储结构的优缺点 54
    3.6线性表的链式存储结构 55
    反正也是要让相邻元素间留有足够余地,那干脆所有元素都不要考虑相邻位置了,哪有空位就到哪里。而只是让每个元素知道它下一个元素的位置在哪里。
    3.6.1顺序存储结构不足的解决
    办法 55
    3.6.2线性表链式存储结构定义 56
    3.6.3头指针与头结点的异同 58
    3.6.4线性表链式存储结构代码描述 58
    3.7单链表的读取 60
    3.8单链表的插入与删除 61
    本来是爸爸左牵着妈妈的手、右牵着宝宝的手在马路边散步。突然迎面走来一美女,爸爸失神般地望着,此情景被妈妈逮个正着,于是扯开父子俩,拉起宝宝的左手就快步朝前走去。
    3.8.1单链表的插入 61
    3.8.2单链表的删除 64
    3.9单链表的整表创建 66
    3.10单链表的整表删除 69
    3.11单链表结构与顺序存储结构优缺点 70
    3.12静态链表 71
    对于一些语言,如basic、fortran等早期的编程高级语言,由于没有指针,这链表结构,按照前面我们的讲法,它就没法实现了。怎么办呢?
    3.12.1静态链表的插入操作 73
    3.12.2静态链表的删除操作 75
    3.12.3静态链表优缺点 77
    3.13循环链表 78
    这个轮回的思想很有意思。它强调了不管你今生是穷是富,如果持续行善积德,下辈子就会好过,反之就会遭到报应。
    3.14双向链表 81
    就像每个人的人生一样,欲收获就得付代价。双向链表既然是比单链表多了如可以反向遍历查找等的数据结构,那么也就需要付出一些小的代价。
    3.15总结回顾 84
    3.16结尾语 85
    如果你觉得上学读书是受罪,假设你可以活到80岁,其实你最多也就吃了20年苦。用人生四分之一的时间来换取其余时间的幸福生活,这点苦不算啥。
    第4章栈与队列 87
    4.1开场白 88
    想想看,在你准备用枪的时候,突然这手枪明明有子弹却打不出来,这不是要命吗。
    4.2栈的定义 89
    类似的很多软件,比如word、photoshop等,都有撤消(undo)的操作,也是用栈这种思想方式来实现的。
    4.2.1栈的定义 89
    4.2.2进栈出栈变化形式 90
    4.3栈的抽象数据类型 91
    4.4栈的顺序存储结构及实现 92
    4.4.1栈的顺序存储结构 92
    4.4.2栈的顺序存储结构进栈操作 93
    4.4.3栈的顺序存储结构出栈操作 94
    4.5两栈共享空间 94
    两个大学室友毕业同时到北京工作,他们都希望租房时能找到独自住的一室户或一室一厅,可找来找去发现,实在是承受不起。
    4.6栈的链式存储结构及实现 97
    4.6.1栈的链式存储结构 97
    4.6.2栈的链式存储结构进栈操作 98
    4.6.3栈的链式存储结构出栈操作 99
    4.7栈的作用 100
    4.8栈的应用——递归 100
    当你往镜子前面一站,镜子里面就有一个你的像。但你试过两面镜子一起照吗?如果a、b两面镜子相互面对面放着,你往中间一站,嘿,两面镜子里都有你的千百个“化身”。
    4.8.1斐波那契数列实现 101
    4.8.2递归定义 103
    4.9栈的应用——四则运算表达式求值 104
    4.9.1后缀(逆波兰)表示法定义 104
    4.9.2后缀表达式计算结果 106
    4.9.3中缀表达式转后缀表达式 108
    4.10队列的定义 111
    电脑有时会处于疑似死机的状态。就当你失去耐心,打算了reset时。突然它像酒醒了一样,把你刚才点击的所有操作全部都按顺序执行了一遍。
    4.11队列的抽象数据类型 112
    4.12循环队列 113
    你上了公交车发现前排有两个空座位,而后排所有座位都已经坐满,你会怎么做?立马下车,并对自己说,后面没座了,我等下一辆?没这么笨的人,前面有座位,当然也是可以坐的。
    4.12.1队列顺序存储的不足 112
    4.12.2循环队列定义 114
    4.13队列的链式存储结构及实现 117
    4.13.1队列链式存储结构入队操作118
    4.13.2队列链式存储结构出队操作 119
    4.14总结回顾 120
    4.15结尾语 121
    人生,需要有队列精神的体现。南极到北极,不过是南纬90度到北纬90度的队列,如果你中途犹豫,临时转向,也许你就只能和企鹅相伴永远。可事实上,无论哪个方向,只要你坚持到底,你都可以到达终点。
    第5章串 123
    5.1开场白 124
    “枯眼望遥山隔水,往来曾见几心知?壶空怕酌一杯酒,笔下难成和韵诗。途路阻人离别久,讯音无雁寄回迟。孤灯夜守长寥寂,夫忆妻兮父忆儿。”……可再仔细一读发现,这首诗竟然可以倒过来读。
    5.2串的定义 124
    我所提到的“over”、“end”、“lie”其实就是“lover”、“friend”、“believe”这些单词字符串的子串。
    5.3串的比较 126
    5.4串的抽象数据类型 127
    5.5串的存储结构 128
    感情上发生了问题,为了向女友解释一下,我准备发一条短信,一共打了75个字。最后八个字是“我恨你是不可能的”,点发送。后来得知对方收到的,只有70个字,短信结尾是“……我恨你”。
    5.5.1串的顺序存储结构 129
    5.5.2串的链式存储结构 131
    5.6朴素的模式匹配算法 131
    主串为s=”00000000000000000000000000000000000000000000000001”,而要匹配的子串为t=”0000000001”,……在匹配时,每次都得将t中字符循环到最后一位才发现,哦,原来它们是不匹配的。
    5.7kmp模式匹配算法 135
    很多年前我们的科学家觉得像这种有多个0和1重复字符的字符串,却需要挨个遍历的算法,是非常糟糕的事情。
    5.7.1kmp模式匹配算法原理 135
    5.7.2next数组值推导 139
    5.7.3kmp模式匹配算法实现 141
    5.7.4kmp模式匹配算法改进 142
    5.7.5nextval数组值推导 144
    5.8总结回顾 146
    5.9结尾语 146
    《璇玑图》共八百四十字,纵横各二十九字,纵、横、斜、交互、正、反读或退一字、迭一字读均可成诗,诗有三、四、五、六、七言不等,目前有人统计可组成七千九百五十八首诗。听清楚哦,是7958首。
    第6章树 149
    6.1开场白 150
    无论多高多大的树,那也是从小到大的,由根到叶,一点点成长起来的。俗话说十年树木,百年树人,可一棵大树又何止是十年这样容易。
    6.2树的定义 150
    树的定义其实就是我们在讲解栈时提到的递归的方法。也就是在树的定义之中还用到了树的概念,这是比较新的一种定义方法。
    6.2.1结点分类 152
    6.2.2结点间关系 152
    6.2.3树的其他相关概念 153
    6.3树的抽象数据类型 154
    6.4树的存储结构 155
    6.4.1双亲表示法 155
    6.4.2孩子表示法 158
    6.4.3孩子兄弟表示法 162
    6.5二叉树的定义 163
    苏东坡曾说:“人有悲欢离合,月有阴晴圆缺,此事古难全”。意思就是完美是理想,不完美才是人生。我们通常举的例子也都是左高右低、参差不齐的二叉树。那是否存在完美的二叉树呢?
    6.5.1二叉树特点 164
    6.5.2特殊二叉树 166
    6.6二叉树的性质 169
    6.6.1二叉树性质1 169
    6.6.2二叉树性质2 169
    6.6.3二叉树性质3 169
    6.6.4二叉树性质4 170
    6.6.5二叉树性质5 171
    6.7二叉树的存储结构 172
    6.7.1二叉树顺序存储结构 172
    6.7.2二叉链表 173
    6.8遍历二叉树 174
    你人生的道路上,高考填志愿要面临哪个城市、哪所大学、具体专业等选择,由于选择方式的不同,遍历的次序就完全不同。
    6.8.1二叉树遍历原理 174
    6.8.2二叉树遍历方法 175
    6.8.3前序遍历算法 178
    6.8.4中序遍历算法 181
    6.8.5后序遍历算法 184
    6.8.6推导遍历结果 184
    6.9二叉树的建立 187
    6.10线索二叉树 188
    我们现在提倡节约型社会,一切都应该节约为本。对待我们的程序当然也不例外,能不浪费的时间或空间,都应该考虑节省。
    6.10.1线索二叉树原理 188
    6.10.2线索二叉树结构实现 191
    6.11树、森林与二叉树的转换 195
    有个乡镇企业也买了同样的生产线,老板发现这个问题后找了个小工来说:你必须搞定,不然炒你鱿鱼。小工很快想出了办法:他在生产线旁边放了台风扇猛吹,空皂盒自然会被吹走。
    6.11.1树转换为二叉树 196
    6.11.2森林转换为二叉树 197
    6.11.3二叉树转换为树 197
    6.11.4二叉树转换为森林 199
    6.11.5树与森林的遍历 199
    6.12赫夫曼树及其应用 200
    压缩而不出错是如何做到的呢?简单的说,就是把我们要压缩的文本进行重新编码,以达到减少不必要的空间的技术。压缩和解压缩技术就是基于赫夫曼的研究之上发展而来,我们应该记住他。
    6.12.1赫夫曼树 200
    6.12.2赫夫曼树定义与原理 203
    6.12.3赫夫曼编码 205
    6.13总结回顾 208
    6.14结尾语 209
    人受伤时会流下泪水。树受伤时,天将再不会哭。希望我们的未来不要仅仅是钢筋水泥建造的高楼,也要有那郁郁葱葱的森林和草地,我们人类才可能与自然和谐共处。
    第7章图 211
    7.1开场白 212
    如果你不善于规划,很有可能就会出现如玩好新疆后到海南,然后再冲向黑龙江这样的荒唐决策。
    7.2图的定义 213
    现实中,人与人之间关系就非常复杂,比如我的认识的朋友,可能他们之间也互相认识,这就不是简单的一对一、一对多的关系了,那就是我们今天要研究的主题——图。
    7.2.1各种图定义 214
    7.2.2图的顶点与边间关系 217
    7.2.3连通图相关术语 219
    7.2.4图的定义与术语总结 222
    7.3图的抽象数据类型 222
    7.4图的存储结构 223
    因为美国的黑夜就是中国的白天,利用互联网,他的员工白天上班就可以监控到美国仓库夜间的实际情况,如果发生了像火灾、偷盗这样的突发事件,及时电话到美国当地相关人员处理
    7.4.1邻接矩阵 224
    7.4.2邻接表 228
    7.4.3十字链表 232
    7.4.4邻接多重表 234
    7.4.5边集数组 236
    7.5图的遍历 237
    我有一天早晨准备出门,发现钥匙不见了。一定是我儿子拿着玩,不知道丢到哪个犄角旮旯去了,你们说,我应该如何找?
    7.5.1深度优先遍历 238
    7.5.2广度优先遍历 242
    7.6最小生成树 245
    如果你加班加点,没日没夜设计出的结果是方案一,我想你离被炒鱿鱼应该是不远了(同学微笑)。因为这个方案比后两个方案一半还多的成本会让老板气晕过去的。
    7.6.1普里姆(prim)算法 247
    7.6.2克鲁斯卡尔(kruskal)算法 251
    7.7最短路径 257
    有人为了省钱,需路程最短,但换乘站间距离长等原因并不省时间;另一些人,他为赶时间,最大的需求是总时间要短;还有一类人,他们都不想多走路,关键是换乘要少,这样可以在车上好好休息一下。
    7.7.1迪杰斯特拉(dijkstra)算法 259
    7.7.3弗洛伊德(floyd)算法 265
    7.8拓扑排序 270
    电影制作不可能在人员到位进驻场地时,导演还没有找到,也不可能在拍摄过程中,场地都没有。这都会导致荒谬的结果。
    7.8.1拓扑排序介绍 271
    7.8.2拓扑排序算法 272
    7.9关键路径 277
    假如造一个轮子要0.5天、造一个发动机要3天、造一个车底盘要2天、造一个外壳要2天,其它零部件2天,全部零部件集中到一处要0.5天,组装成车要2天,请问,在汽车厂造一辆车,最短需要多少天呢?
    7.9.1关键路径算法原理 279
    7.9.2关键路径算法 280
    7.10总结回顾 287
    7.11结尾语 289
    世界上最遥远的距离,不是牛a与牛c之间狭小空隙,而是你们当中,有人在通往牛逼的路上一路狂奔,而有人步入大学校园就学会放弃。
    第8章查找 291
    8.1开场白 292
    当你精心写了一篇博文或者上传一组照片到互联网上,来自世界各地的无数“蜘蛛”便会蜂拥而至。所谓蜘蛛就是搜索引擎公司服务器上软件,它把互联网当成了蜘蛛网,没日没夜的访问上面的各种信息。
    8.2查找概论 293
    比如网络时代的新名词,如“蜗居”、“蚁族”等,如果需要将它们收录到汉语词典中,显然收录时就需要查找它们是否存在,以及找到如果不存在时应该收录的位置。
    8.3顺序表查找 295
    8.3.1顺序表查找算法 296
    8.3.2顺序表查找优化 297
    8.4有序表查找 298
    我在纸上已经写好了一个100以内的正整数请你猜,问几次可以猜出来。当时已经介绍了如何才可以最快的猜出这个数字。我们把这种每次取中间记录查找的方法叫做折半查找。
    8.4.1折半查找 298
    8.4.2插值查找 301
    8.4.3斐波那契查找 302
    8.5线性索引查找 306
    我母亲年纪大了,经常在家里找不到东西,于是她用一小本子,记录了家里所有小东西放置的位置,比如户口本放在右手床头柜下面抽屉中,钞票放在衣……咳,这个就不提了。
    8.5.1稠密索引 307
    8.5.2分块索引 308
    8.5.3倒排索引 311
    8.6二叉排序树 313
    后来老虎来了,一人拼命地跑,另一人则急中生智,爬到了树上。而老虎是不会爬树的,结果……。爬树者改变了跑的思想,这一改变何等重要,捡回了自己的一条命。
    8.6.1二叉排序树查找操作 316
    8.6.2二叉排序树插入操作 318
    8.6.3二叉排序树删除操作 320
    8.6.4二叉排序树总结 327
    8.7平衡二叉树(avl树) 328
    平板就是一个世界,当诱惑降临,人心中的平衡被打破,世界就会混乱,最后留下的只有孤独寂寞失败。这种单调的机械化的社会,禁不住诱惑的侵蚀,最容易被侵蚀的,恰恰是最空虚的心灵。
    8.7.1平衡二叉树实现原理 330
    8.7.2平衡二叉树实现算法 334
    8.8多路查找树(b树) 341
    要观察一个公司是否严谨,看他们如何开会就知道了。如果开会时每一个人都只是带一张嘴,即兴发言,这肯定是一家不严谨的公司。
    8.8.12-3树 343
    8.8.22-3-4树 348
    8.8.3b树 349
    8.8.4b+树 351
    8.9散列表查找(哈希表)概述 353
    你很想学太极拳,听说学校有个叫张三丰的人打得特别好,于是到学校学生处找人,工作人员拿出学生名单,最终告诉你,学校没这个人,并说张三丰几百年前就已经在武当山作古了。
    8.9.1散列表查找定义 354
    8.9.2散列表查找步骤 355
    8.10散列函数的构造方法 356
    8.10.1直接定址法 357
    8.10.2数字分析法 358
    8.10.3平方取中法 359
    8.10.4折叠法 359
    8.10.5除留余数法 359
    8.10.6随机数法 360
    8.11处理散列冲突的方法 360
    我们每个人都希望身体健康,虽然疾病可以预防,但不可避免,没有任何人可以说,生下来到现在没有生过一次病。
    8.11.1开放定址法 361
    8.11.2再散列函数法 363
    8.11.3链地址法 363
    8.11.4公共溢出区法 364
    8.12散列表查找实现 365
    8.12.1散列表查找算法实现 365
    8.12.2散列表查找性能分析 367
    8.13总结回顾 368
    8.14结尾语 369
    如果我是个喜欢汽车的人,时常搜汽车信息。那么当我在搜索框中输入“甲壳虫”、“美洲虎”等关键词时,不要让动物和人物成为搜索的头条。
    第9章排序 373
    9.1开场白 374
    假如我想买一台iphone4的手机,于是上了某电子商务网站去搜索。可搜索后发现,有8863个相关的物品,如此之多,这叫我如何选择。我其实是想买便宜一点的,但是又怕遇到骗子,想找信誉好的商家,如何做?
    9.2排序的基本概念与分类 375
    比如我们某些大学为了选拔在主科上更优秀的学生,要求对所有学生的所有科目总分倒序排名,并且在同样总分的情况下将语数外总分做倒序排名。这就是对总分和语数外总分两个次关键字的组合排序。
    9.2.1排序的稳定性 376
    9.2.2内排序与外排序 377
    9.2.3排序用到的结构与函数 378
    9.3冒泡排序 378
    无论你学习哪种编程语言,在学到循环和数组时,通常都会介绍一种排序算法,而这个算法一般就是冒泡排序。并不是它的名称很好听,而是说这个算法的思路最简单,最容易理解。
    9.3.1最简单排序实现 379
    9.3.2冒泡排序算法 380
    9.3.3冒泡排序优化 382
    9.3.4冒泡排序复杂度分析 383
    9.4简单选择排序 384
    还有一种做股票的人,他们很少出手,只是在不断观察和判断,等时机一到,果断买进或卖出。他们因为冷静和沉着,以及交易的次数少,而最终收益颇丰。
    9.4.1简单选择排序算法 384
    9.4.2简单选择排序复杂度分析 385
    9.5直接插入排序 386
    哪怕你是第一次玩扑克牌,只要认识这些数字,理牌的方法都是不用教的。将3和4移动到5的左侧,再将2移动到最左侧,顺序就算是理好了。这里,我们的理牌方法,就是直接插入排序法。
    9.5.1直接插入排序算法 386
    9.5.2直接插入排序复杂度分析 388
    9.6希尔排序 389
    不管怎么说,希尔排序算法的发明,使得我们终于突破了慢速排序的时代(超越了时间复杂度为o(n2)),之后,更为高效的排序算法也就相继出现了。
    9.6.1希尔排序原理 391
    9.6.2希尔排序算法 391
    9.6.3希尔排序复杂度分析 395
    9.7堆排序 396
    什么叫堆结构呢?回忆一下我们小时候,特别是男同学,基本都玩过叠罗汉的恶作剧。通常都是先把某个要整的人按倒在地,然后大家就一拥而上扑了上去……后果?后果当然就是一笑了之。
    9.7.1堆排序算法 398
    9.7.2堆排序复杂度分析 405
    9.8归并排序 406
    即使你是你们班级第一、甚至年级第一名,如果你没有上分数线,则说明你的成绩排不到全省前1万名,你也就基本失去了当年上本科的机会了。
    9.8.1归并排序算法 407
    9.8.2归并排序复杂度分析 413
    9.8.3非递归实现归并排序 413
    9.9快速排序 417
    终于我们的高手要登场了,将来你工作后,你的老板让你写个排序算法,而你会的算法中竟然没有快速排序,我想你还是不要声张,偷偷去把快速排序算法找来敲进电脑,这样至少你不至于被大伙儿取笑。
    9.9.1快速排序算法 417
    9.9.2快速排序复杂度分析 421
    9.9.3快速排序优化 422
    9.10总结回顾 428
    目前还没有十全十美的排序算法,有优点就会有缺点,即使是快速排序法,也只是在整体性能上优越,它也存在排序不稳定、需要大量辅助空间、对少量数据排序无优势等不足。
    9.11结尾语 430
    如果你有梦想的话,就要去捍卫它。当别人做不到的时候,他们就想要告诉你,你也不能。如果你想要些什么,就得去努力争取。就这样!
    附录参考文献 435

    点评:
    首先看书必须看前言,这算是习惯。这本书前言好长,很长,相当长。长的我看不下去了,我觉得怎么会有这么蛋疼的作者?前言写的跟辞海式的,难道说这样显得更有水平一些?不过不得不承认,在裹脚布一般的前言中,他真的把此书的特点表达的出奇的清楚。不过裹脚布才是本质....
      所以说前言是个异数,但是亮点在目录。目录采用“图+标题+吐槽”的方式,话说小爷也算是看了二十来年的书了,但是这么有创意的目录,不是说没有,但是要说认真到目录都做得这么精致,还是IT方面的书,那就真的很少见。不管怎么说,在这个是人都出书的时代,能静下心来做出这么用心的东西,不容易的。话说哥们本来就不是个有钱人,能买的起的书实在是少,看了几本书之后,发现书得内容宛如当年JAVA和C#的代码95%以上的重合度般,连自残的心都有。他们那不叫写书,那是赤裸裸的调戏消费者啊。哎!每个只看名字就买书的人,上辈子都是受啊....
      数据结构我学了2遍,这是第三遍。万幸,当年我的数据结构的老师是全国有名的一教授,所以我的数据结构不敢说很好,但是说七窍通了六窍还是没问题的(丫的就是一窍不通)。
      当年学的时候,讲到一个地方,稍微难一点的,这位教授,就一句话:“这里先记着,以后会明白的”。然后就跳过讲下一个问题去了。我发现很多课程里,普遍存在这种现象,我不知道为啥,当时只是觉得怪怪的,不过后来却发现老师们说的确实也不算错,这种事情确实后面自己就明白了。
      直到后来,在一个无意之间,我才明白当时我为什么觉得怪怪的。比如说做主食,诸如饺子,包子,火烧,混沌之类,每次我们做的时候,师傅说有什么不明白的,后面做多了自己就明白了。直到有一天,我们做完饺子,包子,火烧,混沌之后,我们突然发现,原来就是调馅,然后包上不同的面皮,然后不同的做法。我们学了4次调馅的过程。你这是拿我当傻小子坑着解闷玩呢?
      而且数据结构这门课,更像是高度抽象出来的,其实跟用什么语言没有太大的关系,那么为什么还要这么纠结于代码?为什么编程就一定要死盯着代码不放?不是说代码不重要,而是说很多时候,其实脱离了代码,一些知识反而更好理解,为什么要为了印证一个说起来蛮简单的代码,弄一段让人云山雾绕的代码?这难道就是传说中的装13?
      大爷的,放到我们这行就是,其实老师可以先教我们思想,至于是用C#还是java实现,都是面向对象的语言,我自己琢磨好不好。结果是我们java学一遍,C#学一遍,由于开课的间隔长,而且章节不同步,以至于很长一段时间觉得丫之间虽说有关系,但是关系不大有没有?
      这就是我要说的这本书里的东西了,作者很聪明的没在代码上纠结太多,而是用了大量的实例,图和吐槽来直观解释这些东西是什么,能干什么。而不是不断的拿出问题来,一个一个的解,然后试图来证明其中的共性。
      知道么?很多时候,我们其实不关心那些所谓的问题的共性,我们只需要知道在什么地方用什么方法最合适,这是前提。这种思想说起来很不符合我们中国人思路,我们的教育是想让我们做全才,既然学就要学懂,要么就是功利主义抬头。但是根据面向对象的原则,我们不需要知道电池的原理,我们只需要知道它能让我们的手电筒亮起来就够了。再一个你要跟孔子说:“哥们你说红烧肉咋做的?”,丫来一句:“君子远庖厨”,就给你顶回来了。圣人还不过如此,何况我一个喷子。
      当时看一本Java书得时候,作者说了一句话:“编程不过是一个不断尝试并获得成就感的过程。”可见想慢慢深下去的过程前提是一个知道自己在干什么,并完成的过程。我都不知道在干什么,就是干了百十来个例子,我会对这个东西感兴趣么?
      就如同树结构,我们遍历研究完每一个底层的节点,然后抽象出了上一层的节点,这个在项目中无所谓,但是为什么在学习的时候还要这样呢?为什么我不能站在更高的高度上去实现下一层的节点呢?为什么告诉我1个苹果+1个苹果=2个苹果;1个橘子+1个橘子=2个橘子;而不直接告诉我1+1=2呢?
      这本书中,大量的吐槽和图,让咱清楚地看到,这个东西是干什么,然后让你在蛋疼的时候,想想这些东西可以用在哪合适。
      花开两朵,咱们各表一枝。
      这个遍历和抽象的问题先不说。再说当年我的老师,一位知名数据结构的教授,所以我们学的书不是严蔚敏的,而是这位的。话说当时小生还是一一心求上进的好学生,觉得不懂的太多,然后就买了本严蔚敏的书。结果一看,泪流满面。
      后来觉得是我看严教授的数据结构得时候的心态不对,于是百度了一下,发现优酷上竟有此人的视频教学课程。当时惊为天人,于是下定决心,闭关1个月,看看这门课到底是啥事。
      结果第二天头晕脑胀,第三天就哭天喊地,满地打滚,眼斜口歪。这位大娘,就是拿着一只铅笔一只圆珠笔,在一张打着清华标签的纸上涂涂画画,念着她自己书,一心一意,一字不差,看了这位教授淡定的如入定的和尚念经一般念着课本,看着满屏幕的代码,满屏幕的解释,我整个人顿时就升华了。
      先不说第二天我怎么把那个已经被我砸的支离破碎CRT的显示器扔掉的,我只想吐槽搞研究的人都是神级的存在,我现在还对科学家保持一颗敬畏的心。但是我想说科学家跟我们这些凡人之间应该有个缓冲地带。就像虽说都知道猪肉很香,但是说在一头活猪上片下一块大腿来,我个人觉得没几个人有胃口,当然也架不住有口重的,但是我只是个凡人。
      不得不承认这本书就在这个方面做的很好。最起码它让我知道我在看什么,而不是一个大量术语堆砌起来的一些东西。我不是读不懂专业文献,我的大学一半的专业课程是用纯英语修的,老外教,老外考,参考文献纯英文(另外吐槽一下国内很多文献的渣翻译)。我为嘛要看你翻译的东西呢?你翻译的还未必有我好呢,而且翻译的过程还是一个信息丢失的过程。
      我今天强忍恶心又特意翻了一下严教授的数据结构,结果桌面上的java的API还没关,我发现这两者竟然惊人的相似之处。尼玛啊,老严的东西就是个API啊!!!!有拿API学东西的没?有拿大英词典学英语的没?有拿灯草和尚学古汉语的没?
      吐槽不能啊....

      而且这本书最变态的地方在于几乎每页都有图。其实图更容易让人理解问题,但是能这么下功夫去做去找这么多图的,作者果然是个狠人啊。
      不管怎么说,书是好书,值得一读,更老严的书比,少了很多算法,多了很多思想,希望再接再厉,更创辉煌。
      最后还是不得不说,这么浮躁的年头,这么用心的人少了,都支持一下吧。







    回复

    使用道具 举报

    匿名  发表于 2020-1-2 16:35:44
    :lol:lol:lol:lol
    回复

    使用道具

  • TA的每日心情
    开心
    2020-12-22 07:11
  • 签到天数: 21 天

    [LV.4]高级软件工程师

    740

    主题

    809

    帖子

    2663

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    2663
     楼主| 发表于 2020-1-9 20:09:39 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-16 02:33
  • 签到天数: 3 天

    [LV.2]转正

    0

    主题

    5

    帖子

    26

    积分

    新手上路

    Rank: 1

    积分
    26
    发表于 2020-1-14 03:56:19 | 显示全部楼层
    这个链接总是显示下载失败啊:L
    回复

    使用道具 举报

    匿名  发表于 2020-1-14 17:16:10
    首先看书必须看前言,这算是习惯。这本书前言好长,很长,相当长。长的我看不下去了,我觉得怎么会有这么蛋疼的作者?前言写的跟辞海式的,难道说这样显得更有水平一些?不过不得不承认,在裹脚布一般的前言中,他真的把此书的特点表达的出奇的清楚。不过裹脚布才是本质....
      所以说前言是个异数,但是亮点在目录。目录采用“图+标题+吐槽”的方式,话说小爷也算是看了二十来年的书了,但是这么有创意的目录,不是说没有,广东快乐十分但是要说认真到目录都做得这么精致,还是IT方面的书,那就真的很少见。不管怎么说,在这个是人都出书的时代,能静下心来做出这么用心的东西,不容易的。话说哥们本来就不是个有钱人,能买的起的书实在是少,江苏快3看了几本书之后,发现书得内容宛如当年JAVA和C#的代码95%以上的重合度般,体彩七星彩连自残的心都有。他们那不叫写书,那是赤裸裸的调戏消费者啊。哎!每个只看名字就买书的人,上辈子都是受啊....
      数据结构我学了2遍,这是第三遍。万幸,当年我的数据结构的老师是全国有名的一教授,所以我的数据结构不敢说很好,但是说七窍通了六窍还是没问题的(丫的就是一窍不通)。
    回复

    使用道具

    匿名  发表于 2020-3-11 23:21:57
    游客 35.241.67.x 发表于 2020-1-14 17:16
    首先看书必须看前言,这算是习惯。这本书前言好长,很长,相当长。长的我看不下去了,我觉得怎么会有这么蛋 ...

    ??????
    回复

    使用道具

    该用户从未签到

    0

    主题

    1

    帖子

    4

    积分

    新手上路

    Rank: 1

    积分
    4
    发表于 2020-6-23 13:24:42 | 显示全部楼层
    未获授权啊,下载不了咋回事:(
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    4

    积分

    新手上路

    Rank: 1

    积分
    4
    发表于 2020-7-26 11:21:40 | 显示全部楼层
    感谢,不能下载呀。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    10

    积分

    新手上路

    Rank: 1

    积分
    10
    发表于 5 天前 | 显示全部楼层
    访问 pdf.ebook23.com 的请求遭到拒绝您未获授权,无法查看此网页。
    HTTP ERROR 403

    下载不了,楼主帮忙发邮箱(327482821@qq.com).  谢谢。
    回复

    使用道具 举报

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

    本版积分规则

    快速回复 返回顶部 返回列表