当前位置:主页 > 计算机电子书 > 程序设计 > 算法下载
算法详解(卷1)算法基础

算法详解(卷1)算法基础 PDF 完整高清版

  • 更新:2019-09-20
  • 大小:88.4 MB
  • 类别:算法
  • 作者:蒂姆·拉夫加登
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

算法详解(卷1)算法基础 PDF

算法详细说明四部曲*卷,详细说明算法基本,呈现算法实质 集斯坦福学校专家教授很多年课堂教学工作经验,从入门到精通,浅显易懂 算法是电子信息科学的关键与生命。算法的运用范畴极广,互联网路由器、测算基因组学、公钥数据加密学和数据库等的保持都必须算法。科学研究算法能够协助人们变成更出色的程序猿,能够我们一起具备更周密的逻辑思维,并取得成功解决各种各样场所的技术性招聘面试。 

它是1本容易入门的算法新手入门书籍,它可做为程序猿的学习培训用书,也合适愿意学习培训算法和想提高算法思维逻辑的用户阅读文章。 这书包括以下几点: 渐进性剖析; 大O表示法; 主方式 ; 迅速分治算法; 随机化算法; 排序算法; 挑选算法。算法是电子信息科学行业*关键的根基之首。算法是程序流程的生命,只能把握了算法,能够轻轻松松地掌控软件开发。 算法详细说明系列产品书籍现有4卷,这书是第1卷——算法基本。

这书现有6章,关键详细介绍了4个主题风格,他们各自是渐进性剖析和大O表示法、分治算法和主方式 、随机化算法及其排列和挑选。附则A和附则B简易详细介绍了统计数据归纳法和离开几率的有关专业知识。这书的每章节均有小测试、章末练习题和程序编写题,这为用户的个人检查及其深化学习培训出示了较多的便捷。 这书为对算法很感兴趣的广大读者出示了丰富多彩而好用的材料,可以协助用户提高算法思维逻辑。这书合适计算机专科的高校老师和大学生,愿意塑造和训炼算法逻辑思维和计算思维的IT专业人员,及其在提前准备招聘面试的求职者和招聘者阅读文章参照。

目录

  • 第 1章 绪论 1
  • 1.1 为什么要学习算法 1
  • 1.2 整数乘法 3
  • 1.2.1 问题和解决方案 3
  • 1.2.2 整数乘法问题 3
  • 1.2.3 小学算法 4
  • 1.2.4 操作数量的分析 5
  • 1.2.5 还能做得更好吗 5
  • 1.3 Karatsuba乘法 6
  • 1.3.1 一个具体的例子 6
  • 1.3.2 一种递归算法 7
  • 1.3.3 Karatsuba乘法 9
  • 1.4 MergeSort算法 11
  • 1.4.1 推动力 11
  • 1.4.2 排序 12
  • 1.4.3 一个例子 13
  • 1.4.4 伪码 14
  • 1.4.5 Merge子程序 15
  • 1.5 MergeSort算法分析 16
  • 1.5.1 Merge的运行时间 17
  • 1.5.2 MergeSort的运行时间 18
  • 1.5.3 定理1.2的证明 19
  • 1.5.4 小测验1.1~1.2的答案 23
  • 1.6 算法分析的指导原则 23
  • 1.6.1 第 1个原则:最坏情况分析 24
  • 1.6.2 第 2个原则:全局分析 25
  • 1.6.3 第3个原则:渐进性分析 26
  • 1.6.4 什么是“快速”算法 27
  • 1.7 本章要点 28
  • 1.8 习题 29
  • 挑战题 31
  • 编程题 31
  • 第 2章 渐进性表示法 32
  • 2.1 要旨 32
  • 2.1.1 推动力 32
  • 2.1.2 高级思维 33
  • 2.1.3 4个例子 34
  • 2.1.4 小测验2.1~2.4的答案 38
  • 2.2 大O表示法 40
  • 2.2.1 文本定义 40
  • 2.2.2 图形定义 40
  • 2.2.3 数学定义 41
  • 2.3 两个基本例子 42
  • 2.3.1 k阶多项式是O(nk) 42
  • 2.3.2 k阶多项式不是O(nk-1) 43
  • 2.4 大Ω和大 表示法 44
  • 2.4.1 大Ω表示法 44
  • 2.4.2 大 表示法 45
  • 2.4.3 小O表示法 46
  • 2.4.4 渐进性表示法的来源 47
  • 2.4.5 小测验2.5的答案 48
  • 2.5 其他例子 48
  • 2.5.1 在指数中添加一个常数 48
  • 2.5.2 指数乘以一个常数 49
  • 2.5.3 最大值vs.和 49
  • 2.6 本章要点 50
  • 2.7 习题 51
  • 第3章 分治算法 53
  • 3.1 分治法规范 53
  • 3.2 以O(n log n)时间计数逆序对 54
  • 3.2.1 问题 54
  • 3.2.2 一个例子 54
  • 3.2.3 协同筛选 55
  • 3.2.4 穷举搜索法 55
  • 3.2.5 分治法 56
  • 3.2.6 高级算法 57
  • 3.2.7 关键思路:站在MergeSort的肩膀上 57
  • 3.2.8 重温Merge 58
  • 3.2.9 Merge和分离逆序对 60
  • 3.2.10 Merge_and_CountSplitInv 61
  • 3.2.11 正确性 61
  • 3.2.12 运行时间 62
  • 3.2.13 小测验3.1~3.2的答案 62
  • 3.3 Strassen的矩阵相乘算法 63
  • 3.3.1 矩阵相乘 63
  • 3.3.2 例子(n = 2) 64
  • 3.3.3 简单算法 64
  • 3.3.4 分治法 65
  • 3.3.5 节省一个递归调用 67
  • 3.3.6 细节 68
  • 3.3.7 小测验3.3的答案 69
  • *3.4 O(n log n)时间的最近点对(Closest Pair)算法 70
  • 3.4.1 问题 70
  • 3.4.2 热身:1D情况 71
  • 3.4.3 预处理 71
  • 3.4.4 一种分治方法 72
  • 3.4.5 一个微妙的变化 74
  • 3.4.6 ClosestSplitPair 74
  • 3.4.7 正确性 76
  • 3.4.8 辅助结论3.3(a)的证明 77
  • 3.4.9 辅助结论3.3(b)的证明 78
  • 3.4.10 小测验3.4的答案 80
  • 3.5 本章要点 80
  • 3.6 习题 81
  • 挑战题 81
  • 编程题 82
  • 第4章 主方法 83
  • 4.1 重温整数乘法 83
  • 4.1.1 RecIntMult算法 84
  • 4.1.2 Karatsuba算法 84
  • 4.1.3 比较递归过程 85
  • 4.2 形式声明 86
  • 4.2.1 标准递归过程 86
  • 4.2.2 主方法的陈述和讨论 87
  • 4.3 6个例子 88
  • 4.3.1 重温MergeSort 89
  • 4.3.2 二分搜索 89
  • 4.3.3 整数乘法的递归算法 90
  • 4.3.4 Karatsuba乘法 90
  • 4.3.5 矩阵乘法 91
  • 4.3.6 一个虚构的递归过程 92
  • 4.3.7 小测验4.2~4.3的答案 93
  • *4.4 主方法的证明 94
  • 4.4.1 前言 94
  • 4.4.2 重温递归树 95
  • 4.4.3 单层所完成的工作 96
  • 4.4.4 各层累计 97
  • 4.4.5 正义与邪恶:需要考虑3种情况 98
  • 4.4.6 预告运行时间上界 99
  • 4.4.7 最后的计算:第 一种情况 100
  • 4.4.8 迂回之旅:几何级数 101
  • 4.4.9 最后的计算:第二种情况和第三种情况 102
  • 4.4.10 小测验4.4~4.5的答案 103
  • 4.5 本章要点 103
  • 4.6 习题 104
  • 第5章 快速排序(QuickSort) 107
  • 5.1 概述 107
  • 5.1.1 排序 108
  • 5.1.2 根据基准元素进行划分 108
  • 5.1.3 高级描述 110
  • 5.1.4 内容前瞻 110
  • 5.2 围绕基准元素进行划分 111
  • 5.2.1 简易方法 111
  • 5.2.2 原地实现:高级计划 112
  • 5.2.3 例子 113
  • 5.2.4 Partition子程序的伪码 115
  • 5.2.5 QuickSort的伪码 117
  • 5.3 良好的基准元素的重要性 117
  • 5.3.1 ChoosePivot的简单实现 118
  • 5.3.2 ChoosePivot的过度实现 118
  • 5.3.3 小测验5.1~5.2的答案 119
  • 5.4 随机化的QuickSort 121
  • 5.4.1 ChoosePivot的随机化实现 121
  • 5.4.2 随机化QuickSort的运行时间 122
  • 5.4.3 直觉:随机基准元素为什么很好 123
  • *5.5 随机化QuickSort的分析 124
  • 5.5.1 预备工作 125
  • 5.5.2 分解蓝图 126
  • 5.5.3 应用蓝图 128
  • 5.5.4 计算比较的概率 130
  • 5.5.5 最后的计算 132
  • 5.5.6 小测验5.3的答案 133
  • *5.6 排序需要 (n log n)的比较 134
  • 5.6.1 基于比较的排序算法 134
  • 5.6.2 具有更强前提的更快速排序 135
  • 5.6.3 定理5.5的证明 136
  • 5.7 本章要点 138
  • 5.8 习题 139
  • 挑战题 140
  • 编程题 141
  • 第6章 线性时间级的选择 142
  • 6.1 RSelect算法 143
  • 6.1.1 选择问题 143
  • 6.1.2 简化为排序 144
  • 6.1.3 分治法 145
  • 6.1.4 RSelect的伪码 146
  • 6.1.5 RSelect的运行时间 147
  • 6.1.6 小测验6.1~6.2的答案 149
  • *6.2 RSelect的分析 150
  • 6.2.1 根据阶段追踪进展 150
  • 6.2.2 简化为掷硬币 151
  • 6.2.3 综合结论 153
  • *6.3 DSelect算法 154
  • 6.3.1 基本思路:中位的中位元素 154
  • 6.3.2 DSelect的伪码 155
  • 6.3.3 理解DSelect 156
  • 6.3.4 DSelect的运行时间 157
  • *6.4 DSelect的分析 159
  • 6.4.1 递归调用之外所完成的工作 159
  • 6.4.2 一个粗略的递归过程 159
  • 6.4.3 30-70辅助结论 160
  • 6.4.4 解析递归过程 163
  • 6.4.5 先猜后验方法 164
  • 6.5 本章要点 166
  • 6.6 本章习题 166
  • 挑战题 167
  • 编程题 168
  • 附录A 快速回顾数学归纳法 169
  • 附录B 快速回顾离散概率 173

资源下载

资源下载地址1:https://pan.baidu.com/s/11a-Us89bA_96GfV6R0hG4Q

网友留言