Java常用算法手册(含盘)

Java常用算法手册(含盘)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: , ,
2014-06
版次: 1
ISBN: 9787113183585
定价: 59.80
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 476页
字数: 702千字
  • 现代的设计任务大多通过计算机编程来完成,而算法起到了至关重要的作用。可以毫不夸张地说,算法是一切程序设计的灵魂和基础。选择合理的算法,可以起到事半功倍的效果。
    本书分三篇,共14章,分别介绍了算法基础、算法应用和算法面试题。首先介绍了算法概述,然后重点分析了数据结构和基本算法思想;接着,详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏、密码学等领域中的应用;最后,列举了算法的一些常见面试题。
    书中知识点覆盖全面,结构安排紧凑,讲解详细,实例丰富。全书对每一个知识点都给出了相应的算法及应用实例,虽然这些例子都是以Java语言来编写的,但是这些算法并不局限于Java语言。如果读者采用其他的编程语言,例如C++、C、C#等,只要根据其语法格式进行适当的修改便可以了。
    本书旨在帮助Java语言初级程序员深入了解Java算法思想,提升其语言代码编程能力,还可以作为大中专院校学生学习数据结构和算法的参考书,也可为教师授课提供素材,同时还可以作为具有一定编程经验的程序员的参考用书。
    第1篇算法基础篇
    第1章算法和实现算法的Java语法
    1.1建立算法初步概念1
    1.1.1什么是算法1
    1.1.2算法的发展历史3
    1.1.3算法的分类3
    1.2算法相关概念的区别3
    1.2.1算法与公式的关系4
    1.2.2算法与程序的关系4
    1.2.3算法与数据结构的关系4
    1.3算法的表示5
    1.3.1自然语言表示5
    1.3.2流程图表示5
    1.3.3N-S图表示6
    1.3.4伪代码表示7
    1.4算法的性能评价8
    1.4.1时间复杂度8
    1.4.2空间复杂度8
    1.5一个算法实例8
    1.5.1查找数字9
    1.5.2创建项目10
    1.5.3编译执行12
    1.6Java程序的基本结构13
    1.6.1类是一个基本单元14
    1.6.2main方法15
    1.6.3自定义方法15
    1.6.4System.out.println的使用16
    1.6.5一个简单而完整的程序16
    1.7顺序结构17
    1.8分支结构18
    1.8.1if...else分支结构18
    1.8.2if...else嵌套19
    1.8.3switch语句20
    1.8.4编程实例21
    1.9循环结构22
    1.9.1while循环23
    1.9.2do…while循环24
    1.9.3for循环24
    1.9.4编程实例25
    1.10跳转结构29
    1.10.1break29
    1.10.2continue29
    1.10.3编程实例29
    1.11小结31
    第2章数据结构
    2.1数据结构概述32
    2.1.1什么是数据结构32
    2.1.2数据结构中的基本概念33
    2.1.3数据结构的内容33
    2.1.4数据结构的分类35
    2.1.5数据结构的几种存储方式35
    2.1.6数据类型36
    2.1.7常用的数据结构37
    2.1.8选择合适的数据结构解决实际问题38
    2.2线性表38
    2.2.1什么是线性表38
    2.2.2线性表的基本运算39
    2.3顺序表结构40
    2.3.1准备数据40
    2.3.2初始化顺序表41
    2.3.3计算顺序表长度41
    2.3.4插入结点41
    2.3.5追加结点42
    2.3.6删除结点42
    2.3.7查找结点43
    2.3.8显示所有结点43
    2.3.9顺序表操作实例44
    2.4链表结构48
    2.4.1什么是链表结构48
    2.4.2准备数据49
    2.4.3追加结点49
    2.4.4插入头结点50
    2.4.5查找结点51
    2.4.6插入结点52
    2.4.7删除结点52
    2.4.8计算链表长度53
    2.4.9显示所有结点54
    2.4.10链表操作实例54
    2.5栈结构59
    2.5.1什么是栈结构59
    2.5.2准备数据60
    2.5.3初始化栈结构60
    2.5.4判断空栈61
    2.5.5判断满栈61
    2.5.6清空栈61
    2.5.7释放空间62
    2.5.8入栈62
    2.5.9出栈62
    2.5.10读结点数据63
    2.5.11栈结构操作实例63
    2.6队列结构66
    2.6.1什么是队列结构66
    2.6.2准备数据67
    2.6.3初始化队列结构68
    2.6.4判断空队列68
    2.6.5判断满队列68
    2.6.6清空队列69
    2.6.7释放空间69
    2.6.8入队列69
    2.6.9出队列70
    2.6.10读结点数据70
    2.6.11计算队列长度71
    2.6.12队列结构操作实例71
    2.7树结构75
    2.7.1什么是树结构75
    2.7.2树的基本概念75
    2.7.3二叉树76
    2.7.4准备数据79
    2.7.5初始化二叉树80
    2.7.6添加结点80
    2.7.7查找结点82
    2.7.8获取左子树82
    2.7.9获取右子树83
    2.7.10判断空树83
    2.7.11计算二叉树深度84
    2.7.12清空二叉树84
    2.7.13显示结点数据84
    2.7.14遍历二叉树85
    2.7.15树结构操作实例87
    2.8图结构94
    2.8.1什么是图结构94
    2.8.2图的基本概念94
    2.8.3准备数据98
    2.8.4创建图100
    2.8.5清空图101
    2.8.6显示图101
    2.8.7遍历图102
    2.8.8图结构操作实例103
    2.9小结106
    第3章基本算法思想
    3.1常用算法思想概述107
    3.2穷举算法思想107
    3.2.1穷举算法基本思想108
    3.2.2穷举算法实例108
    3.3递推算法思想109
    3.3.1递推算法基本思想110
    3.3.2递推算法实例110
    3.4递归算法思想111
    3.4.1递归算法基本思想112
    3.4.2递归算法实例112
    3.5分治算法思想113
    3.5.1分治算法基本思想113
    3.5.2分治算法实例114
    3.6概率算法思想117
    3.6.1概率算法基本思想118
    3.6.2概率算法实例118
    3.7小结120
    第2篇算法应用篇
    第4章排序算法
    4.1排序算法概述121
    4.2冒泡排序法122
    4.2.1冒泡排序算法122
    4.2.2冒泡排序算法实例123
    4.3选择排序法125
    4.3.1选择排序算法125
    4.3.2选择排序算法实例126
    4.4插入排序法128
    4.4.1插入排序算法128
    4.4.2插入排序算法实例130
    4.5Shell排序法131
    4.5.1Shell排序算法131
    4.5.2Shell排序算法实例132
    4.6快速排序法134
    4.6.1快速排序算法134
    4.6.2快速排序算法实例136
    4.7堆排序法138
    4.7.1堆排序算法138
    4.7.2堆排序算法实例142
    4.8合并排序法144
    4.8.1合并排序算法145
    4.8.2合并排序算法实例147
    4.9排序算法的效率150
    4.10排序算法的其他应用151
    4.10.1反序排序151
    4.10.2字符串数组的排序153
    4.10.3字符串的排序156
    4.11小结158
    第5章查找算法
    5.1查找算法概述159
    5.2顺序查找160
    5.2.1顺序查找算法160
    5.2.2顺序查找操作实例160
    5.3折半查找162
    5.3.1折半查找算法162
    5.3.2折半查找操作实例164
    5.4数据结构中的查找算法166
    5.4.1顺序表结构中的查找算法167
    5.4.2链表结构中的查找算法170
    5.4.3树结构中的查找算法173
    5.4.4图结构中的查找算法174
    5.5小结175
    第6章基本数学问题
    6.1判断闰年176
    6.2多项式计算178
    6.2.1一维多项式求值178
    6.2.2二维多项式求值180
    6.2.3多项式乘法182
    6.2.4多项式除法183
    6.3随机数生成算法186
    6.3.1Java语言中的随机方法186
    6.3.2[0,1]之间均匀分布的随机数算法188
    6.3.3产生任意范围的随机数189
    6.3.4[m,n]之间均匀分布的随机整数算法190
    6.3.5正态分布的随机数生成算法192
    6.4复数运算193
    6.4.1简单的复数运算194
    6.4.2复数的幂运算196
    6.4.3复指数运算197
    6.4.4复对数运算199
    6.4.5复正弦运算200
    6.4.6复余弦运算201
    6.5阶乘202
    6.5.1使用循环来计算阶乘202
    6.5.2使用递归来计算阶乘203
    6.6计算π的近似值204
    6.6.1割圆术205
    6.6.2蒙特卡罗算法207
    6.6.3级数公式210
    6.7矩阵运算212
    6.7.1矩阵加法212
    6.7.2矩阵减法213
    6.7.3矩阵乘法215
    6.8方程求解217
    6.8.1线性方程求解——高斯消元法217
    6.8.2非线性方程求解——二分法221
    6.8.3非线性方程求解——牛顿迭代法224
    6.9小结227
    第7章数据结构问题
    7.1动态数组排序228
    7.1.1动态数组的存储和排序228
    7.1.2动态数组排序实例229
    7.2约瑟夫环231
    7.2.1简单约瑟夫环算法232
    7.2.2简单约瑟夫环求解233
    7.2.3复杂约瑟夫环算法235
    7.2.4复杂约瑟夫环求解236
    7.3城市之间的最短总距离239
    7.3.1最短总距离算法239
    7.3.2最短总距离求解241
    7.4最短路径246
    7.4.1最短路径算法246
    7.4.2最短路径求解248
    7.5括号匹配253
    7.5.1括号匹配算法254
    7.5.2括号匹配求解255
    7.6小结258
    第8章数论问题
    8.1数论概述259
    8.1.1数论概述259
    8.1.2数论的分类260
    8.1.3初等数论261
    8.1.4本章用到的基本概念261
    8.2完全数262
    8.2.1什么是完全数262
    8.2.2计算完全数算法263
    8.3亲密数265
    8.3.1什么是亲密数265
    8.3.2计算亲密数算法266
    8.4水仙花数269
    8.4.1什么是水仙花数269
    8.4.2计算水仙花数算法270
    8.5自守数272
    8.5.1什么是自守数272
    8.5.2计算自守数算法273
    8.6最大公约数276
    8.6.1计算最大公约数算法——辗转相除法277
    8.6.2计算最大公约数算法——Stein算法277
    8.6.3计算最大公约数示例279
    8.7最小公倍数280
    8.8素数282
    8.8.1什么是素数282
    8.8.2计算素数算法282
    8.9回文素数284
    8.9.1什么是回文素数284
    8.9.2计算回文素数算法284
    8.10平方回文数287
    8.10.1什么是平方回文数287
    8.10.2计算平方回文数算法287
    8.11分解质因数290
    8.12小结292
    第9章算法经典趣题
    9.1百钱买百鸡293
    9.1.1百钱买百鸡算法293
    9.1.2百钱买百鸡求解294
    9.2五家共井295
    9.2.1五家共井算法295
    9.2.2五家共井求解296
    9.3鸡兔同笼298
    9.3.1鸡兔同笼算法298
    9.3.2鸡兔同笼求解298
    9.4猴子吃桃299
    9.4.1猴子吃桃算法300
    9.4.2猴子吃桃求解300
    9.5舍罕王赏麦301
    9.5.1舍罕王赏麦问题302
    9.5.2舍罕王赏麦求解302
    9.6汉诺塔303
    9.6.1汉诺塔算法304
    9.6.2汉诺塔求解305
    9.7窃贼问题307
    9.7.1窃贼问题算法307
    9.7.2窃贼问题求解309
    9.8马踏棋盘312
    9.8.1马踏棋盘算法312
    9.8.2马踏棋盘求解314
    9.9八皇后问题317
    9.9.1八皇后问题算法317
    9.9.2八皇后问题求解318
    9.10寻找假银币320
    9.10.1寻找假银币算法320
    9.10.2寻找假银币求解322
    9.11青蛙过河325
    9.11.1青蛙过河算法325
    9.11.2青蛙过河求解326
    9.12三色旗330
    9.12.1三色旗算法330
    9.12.2三色旗求解331
    9.13渔父捕鱼333
    9.13.1渔父捕鱼算法333
    9.13.2渔父捕鱼求解334
    9.14爱因斯坦的阶梯335
    9.14.1爱因斯坦的阶梯算法336
    9.14.2爱因斯坦的阶梯求解336
    9.15兔子产仔337
    9.15.1兔子产仔算法337
    9.15.2兔子产仔求解338
    9.16常胜将军339
    9.16.1常胜将军算法339
    9.16.2常胜将军求解340
    9.17新郎和新娘342
    9.17.1新郎和新娘算法342
    9.17.2新郎和新娘求解343
    9.18三色球344
    9.18.1三色球算法345
    9.18.2三色球求解345
    9.19小结347
    第10章游戏中的算法
    10.1洗扑克牌算法348
    10.1.1洗扑克牌算法348
    10.1.2洗扑克牌实例349
    10.2取火柴游戏算法352
    10.2.1取火柴游戏算法352
    10.2.2取火柴游戏实例353
    10.310点半算法355
    10.3.110点半算法355
    10.3.210点半游戏实例361
    10.4生命游戏368
    10.4.1生命游戏的原理368
    10.4.2生命游戏的算法369
    10.4.3生命游戏实例371
    10.5小结376
    第11章密码学概述
    11.1密码学概述377
    11.1.1密码学的发展377
    11.1.2密码学的基本概念378
    11.1.3柯克霍夫斯原则379
    11.1.4经典密码学算法379
    11.2换位加密解密算法380
    11.2.1换位加密解密算法380
    11.2.2换位加密解密算法实例383
    11.3替换加密解密算法387
    11.3.1替换加密解密算法387
    11.3.2替换加密解密算法实例388
    11.4位加密解密算法390
    11.4.1位加密解密算法390
    11.4.2位加密解密算法实例392
    11.5一次一密加密解密算法393
    11.5.1一次一密加密解密算法394
    11.5.2一次一密加密解密算法实例395
    11.6小结397
    第12章压缩与解压缩算法
    12.1压缩与解压缩概述398
    12.1.1压缩与解压缩分类398
    12.1.2典型的压缩解压缩算法398
    12.2压缩算法399
    12.3解压缩算法402
    12.4压缩解压缩实例405
    12.5小结413
    第3篇算法面试篇
    第13章数学能力测试
    13.1100盏灯414
    13.2找出不同的球415
    13.3用一笔划出经过九个点的
    4条直线416
    13.4在9个点上画10条线417
    13.5时、分和秒针重合问题417
    13.6可以喝多少瓶汽水420
    13.7怎样拿到第100号球421
    13.8烧绳计时422
    第14章算法面试题
    14.1基础算法424
    14.1.1字符串匹配424
    14.1.2哥德巴赫猜想的近似证明427
    14.1.3将一个正整数分解质因数429
    14.1.4怎样实现金额转换431
    14.1.5数字排列436
    14.1.6数字拆解438
    14.1.7数字组合440
    14.2思维扩展算法443
    14.2.1蛇形打印443
    14.2.224点算法445
    14.2.3双色球随机摇号450
    14.2.4巧妙过桥453
    14.2.5猴子吃桃457
    14.2.6天平称物458
    14.2.7掷骰子游戏460
    14.3小结463
  • 内容简介:
    现代的设计任务大多通过计算机编程来完成,而算法起到了至关重要的作用。可以毫不夸张地说,算法是一切程序设计的灵魂和基础。选择合理的算法,可以起到事半功倍的效果。
    本书分三篇,共14章,分别介绍了算法基础、算法应用和算法面试题。首先介绍了算法概述,然后重点分析了数据结构和基本算法思想;接着,详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏、密码学等领域中的应用;最后,列举了算法的一些常见面试题。
    书中知识点覆盖全面,结构安排紧凑,讲解详细,实例丰富。全书对每一个知识点都给出了相应的算法及应用实例,虽然这些例子都是以Java语言来编写的,但是这些算法并不局限于Java语言。如果读者采用其他的编程语言,例如C++、C、C#等,只要根据其语法格式进行适当的修改便可以了。
    本书旨在帮助Java语言初级程序员深入了解Java算法思想,提升其语言代码编程能力,还可以作为大中专院校学生学习数据结构和算法的参考书,也可为教师授课提供素材,同时还可以作为具有一定编程经验的程序员的参考用书。
  • 目录:
    第1篇算法基础篇
    第1章算法和实现算法的Java语法
    1.1建立算法初步概念1
    1.1.1什么是算法1
    1.1.2算法的发展历史3
    1.1.3算法的分类3
    1.2算法相关概念的区别3
    1.2.1算法与公式的关系4
    1.2.2算法与程序的关系4
    1.2.3算法与数据结构的关系4
    1.3算法的表示5
    1.3.1自然语言表示5
    1.3.2流程图表示5
    1.3.3N-S图表示6
    1.3.4伪代码表示7
    1.4算法的性能评价8
    1.4.1时间复杂度8
    1.4.2空间复杂度8
    1.5一个算法实例8
    1.5.1查找数字9
    1.5.2创建项目10
    1.5.3编译执行12
    1.6Java程序的基本结构13
    1.6.1类是一个基本单元14
    1.6.2main方法15
    1.6.3自定义方法15
    1.6.4System.out.println的使用16
    1.6.5一个简单而完整的程序16
    1.7顺序结构17
    1.8分支结构18
    1.8.1if...else分支结构18
    1.8.2if...else嵌套19
    1.8.3switch语句20
    1.8.4编程实例21
    1.9循环结构22
    1.9.1while循环23
    1.9.2do…while循环24
    1.9.3for循环24
    1.9.4编程实例25
    1.10跳转结构29
    1.10.1break29
    1.10.2continue29
    1.10.3编程实例29
    1.11小结31
    第2章数据结构
    2.1数据结构概述32
    2.1.1什么是数据结构32
    2.1.2数据结构中的基本概念33
    2.1.3数据结构的内容33
    2.1.4数据结构的分类35
    2.1.5数据结构的几种存储方式35
    2.1.6数据类型36
    2.1.7常用的数据结构37
    2.1.8选择合适的数据结构解决实际问题38
    2.2线性表38
    2.2.1什么是线性表38
    2.2.2线性表的基本运算39
    2.3顺序表结构40
    2.3.1准备数据40
    2.3.2初始化顺序表41
    2.3.3计算顺序表长度41
    2.3.4插入结点41
    2.3.5追加结点42
    2.3.6删除结点42
    2.3.7查找结点43
    2.3.8显示所有结点43
    2.3.9顺序表操作实例44
    2.4链表结构48
    2.4.1什么是链表结构48
    2.4.2准备数据49
    2.4.3追加结点49
    2.4.4插入头结点50
    2.4.5查找结点51
    2.4.6插入结点52
    2.4.7删除结点52
    2.4.8计算链表长度53
    2.4.9显示所有结点54
    2.4.10链表操作实例54
    2.5栈结构59
    2.5.1什么是栈结构59
    2.5.2准备数据60
    2.5.3初始化栈结构60
    2.5.4判断空栈61
    2.5.5判断满栈61
    2.5.6清空栈61
    2.5.7释放空间62
    2.5.8入栈62
    2.5.9出栈62
    2.5.10读结点数据63
    2.5.11栈结构操作实例63
    2.6队列结构66
    2.6.1什么是队列结构66
    2.6.2准备数据67
    2.6.3初始化队列结构68
    2.6.4判断空队列68
    2.6.5判断满队列68
    2.6.6清空队列69
    2.6.7释放空间69
    2.6.8入队列69
    2.6.9出队列70
    2.6.10读结点数据70
    2.6.11计算队列长度71
    2.6.12队列结构操作实例71
    2.7树结构75
    2.7.1什么是树结构75
    2.7.2树的基本概念75
    2.7.3二叉树76
    2.7.4准备数据79
    2.7.5初始化二叉树80
    2.7.6添加结点80
    2.7.7查找结点82
    2.7.8获取左子树82
    2.7.9获取右子树83
    2.7.10判断空树83
    2.7.11计算二叉树深度84
    2.7.12清空二叉树84
    2.7.13显示结点数据84
    2.7.14遍历二叉树85
    2.7.15树结构操作实例87
    2.8图结构94
    2.8.1什么是图结构94
    2.8.2图的基本概念94
    2.8.3准备数据98
    2.8.4创建图100
    2.8.5清空图101
    2.8.6显示图101
    2.8.7遍历图102
    2.8.8图结构操作实例103
    2.9小结106
    第3章基本算法思想
    3.1常用算法思想概述107
    3.2穷举算法思想107
    3.2.1穷举算法基本思想108
    3.2.2穷举算法实例108
    3.3递推算法思想109
    3.3.1递推算法基本思想110
    3.3.2递推算法实例110
    3.4递归算法思想111
    3.4.1递归算法基本思想112
    3.4.2递归算法实例112
    3.5分治算法思想113
    3.5.1分治算法基本思想113
    3.5.2分治算法实例114
    3.6概率算法思想117
    3.6.1概率算法基本思想118
    3.6.2概率算法实例118
    3.7小结120
    第2篇算法应用篇
    第4章排序算法
    4.1排序算法概述121
    4.2冒泡排序法122
    4.2.1冒泡排序算法122
    4.2.2冒泡排序算法实例123
    4.3选择排序法125
    4.3.1选择排序算法125
    4.3.2选择排序算法实例126
    4.4插入排序法128
    4.4.1插入排序算法128
    4.4.2插入排序算法实例130
    4.5Shell排序法131
    4.5.1Shell排序算法131
    4.5.2Shell排序算法实例132
    4.6快速排序法134
    4.6.1快速排序算法134
    4.6.2快速排序算法实例136
    4.7堆排序法138
    4.7.1堆排序算法138
    4.7.2堆排序算法实例142
    4.8合并排序法144
    4.8.1合并排序算法145
    4.8.2合并排序算法实例147
    4.9排序算法的效率150
    4.10排序算法的其他应用151
    4.10.1反序排序151
    4.10.2字符串数组的排序153
    4.10.3字符串的排序156
    4.11小结158
    第5章查找算法
    5.1查找算法概述159
    5.2顺序查找160
    5.2.1顺序查找算法160
    5.2.2顺序查找操作实例160
    5.3折半查找162
    5.3.1折半查找算法162
    5.3.2折半查找操作实例164
    5.4数据结构中的查找算法166
    5.4.1顺序表结构中的查找算法167
    5.4.2链表结构中的查找算法170
    5.4.3树结构中的查找算法173
    5.4.4图结构中的查找算法174
    5.5小结175
    第6章基本数学问题
    6.1判断闰年176
    6.2多项式计算178
    6.2.1一维多项式求值178
    6.2.2二维多项式求值180
    6.2.3多项式乘法182
    6.2.4多项式除法183
    6.3随机数生成算法186
    6.3.1Java语言中的随机方法186
    6.3.2[0,1]之间均匀分布的随机数算法188
    6.3.3产生任意范围的随机数189
    6.3.4[m,n]之间均匀分布的随机整数算法190
    6.3.5正态分布的随机数生成算法192
    6.4复数运算193
    6.4.1简单的复数运算194
    6.4.2复数的幂运算196
    6.4.3复指数运算197
    6.4.4复对数运算199
    6.4.5复正弦运算200
    6.4.6复余弦运算201
    6.5阶乘202
    6.5.1使用循环来计算阶乘202
    6.5.2使用递归来计算阶乘203
    6.6计算π的近似值204
    6.6.1割圆术205
    6.6.2蒙特卡罗算法207
    6.6.3级数公式210
    6.7矩阵运算212
    6.7.1矩阵加法212
    6.7.2矩阵减法213
    6.7.3矩阵乘法215
    6.8方程求解217
    6.8.1线性方程求解——高斯消元法217
    6.8.2非线性方程求解——二分法221
    6.8.3非线性方程求解——牛顿迭代法224
    6.9小结227
    第7章数据结构问题
    7.1动态数组排序228
    7.1.1动态数组的存储和排序228
    7.1.2动态数组排序实例229
    7.2约瑟夫环231
    7.2.1简单约瑟夫环算法232
    7.2.2简单约瑟夫环求解233
    7.2.3复杂约瑟夫环算法235
    7.2.4复杂约瑟夫环求解236
    7.3城市之间的最短总距离239
    7.3.1最短总距离算法239
    7.3.2最短总距离求解241
    7.4最短路径246
    7.4.1最短路径算法246
    7.4.2最短路径求解248
    7.5括号匹配253
    7.5.1括号匹配算法254
    7.5.2括号匹配求解255
    7.6小结258
    第8章数论问题
    8.1数论概述259
    8.1.1数论概述259
    8.1.2数论的分类260
    8.1.3初等数论261
    8.1.4本章用到的基本概念261
    8.2完全数262
    8.2.1什么是完全数262
    8.2.2计算完全数算法263
    8.3亲密数265
    8.3.1什么是亲密数265
    8.3.2计算亲密数算法266
    8.4水仙花数269
    8.4.1什么是水仙花数269
    8.4.2计算水仙花数算法270
    8.5自守数272
    8.5.1什么是自守数272
    8.5.2计算自守数算法273
    8.6最大公约数276
    8.6.1计算最大公约数算法——辗转相除法277
    8.6.2计算最大公约数算法——Stein算法277
    8.6.3计算最大公约数示例279
    8.7最小公倍数280
    8.8素数282
    8.8.1什么是素数282
    8.8.2计算素数算法282
    8.9回文素数284
    8.9.1什么是回文素数284
    8.9.2计算回文素数算法284
    8.10平方回文数287
    8.10.1什么是平方回文数287
    8.10.2计算平方回文数算法287
    8.11分解质因数290
    8.12小结292
    第9章算法经典趣题
    9.1百钱买百鸡293
    9.1.1百钱买百鸡算法293
    9.1.2百钱买百鸡求解294
    9.2五家共井295
    9.2.1五家共井算法295
    9.2.2五家共井求解296
    9.3鸡兔同笼298
    9.3.1鸡兔同笼算法298
    9.3.2鸡兔同笼求解298
    9.4猴子吃桃299
    9.4.1猴子吃桃算法300
    9.4.2猴子吃桃求解300
    9.5舍罕王赏麦301
    9.5.1舍罕王赏麦问题302
    9.5.2舍罕王赏麦求解302
    9.6汉诺塔303
    9.6.1汉诺塔算法304
    9.6.2汉诺塔求解305
    9.7窃贼问题307
    9.7.1窃贼问题算法307
    9.7.2窃贼问题求解309
    9.8马踏棋盘312
    9.8.1马踏棋盘算法312
    9.8.2马踏棋盘求解314
    9.9八皇后问题317
    9.9.1八皇后问题算法317
    9.9.2八皇后问题求解318
    9.10寻找假银币320
    9.10.1寻找假银币算法320
    9.10.2寻找假银币求解322
    9.11青蛙过河325
    9.11.1青蛙过河算法325
    9.11.2青蛙过河求解326
    9.12三色旗330
    9.12.1三色旗算法330
    9.12.2三色旗求解331
    9.13渔父捕鱼333
    9.13.1渔父捕鱼算法333
    9.13.2渔父捕鱼求解334
    9.14爱因斯坦的阶梯335
    9.14.1爱因斯坦的阶梯算法336
    9.14.2爱因斯坦的阶梯求解336
    9.15兔子产仔337
    9.15.1兔子产仔算法337
    9.15.2兔子产仔求解338
    9.16常胜将军339
    9.16.1常胜将军算法339
    9.16.2常胜将军求解340
    9.17新郎和新娘342
    9.17.1新郎和新娘算法342
    9.17.2新郎和新娘求解343
    9.18三色球344
    9.18.1三色球算法345
    9.18.2三色球求解345
    9.19小结347
    第10章游戏中的算法
    10.1洗扑克牌算法348
    10.1.1洗扑克牌算法348
    10.1.2洗扑克牌实例349
    10.2取火柴游戏算法352
    10.2.1取火柴游戏算法352
    10.2.2取火柴游戏实例353
    10.310点半算法355
    10.3.110点半算法355
    10.3.210点半游戏实例361
    10.4生命游戏368
    10.4.1生命游戏的原理368
    10.4.2生命游戏的算法369
    10.4.3生命游戏实例371
    10.5小结376
    第11章密码学概述
    11.1密码学概述377
    11.1.1密码学的发展377
    11.1.2密码学的基本概念378
    11.1.3柯克霍夫斯原则379
    11.1.4经典密码学算法379
    11.2换位加密解密算法380
    11.2.1换位加密解密算法380
    11.2.2换位加密解密算法实例383
    11.3替换加密解密算法387
    11.3.1替换加密解密算法387
    11.3.2替换加密解密算法实例388
    11.4位加密解密算法390
    11.4.1位加密解密算法390
    11.4.2位加密解密算法实例392
    11.5一次一密加密解密算法393
    11.5.1一次一密加密解密算法394
    11.5.2一次一密加密解密算法实例395
    11.6小结397
    第12章压缩与解压缩算法
    12.1压缩与解压缩概述398
    12.1.1压缩与解压缩分类398
    12.1.2典型的压缩解压缩算法398
    12.2压缩算法399
    12.3解压缩算法402
    12.4压缩解压缩实例405
    12.5小结413
    第3篇算法面试篇
    第13章数学能力测试
    13.1100盏灯414
    13.2找出不同的球415
    13.3用一笔划出经过九个点的
    4条直线416
    13.4在9个点上画10条线417
    13.5时、分和秒针重合问题417
    13.6可以喝多少瓶汽水420
    13.7怎样拿到第100号球421
    13.8烧绳计时422
    第14章算法面试题
    14.1基础算法424
    14.1.1字符串匹配424
    14.1.2哥德巴赫猜想的近似证明427
    14.1.3将一个正整数分解质因数429
    14.1.4怎样实现金额转换431
    14.1.5数字排列436
    14.1.6数字拆解438
    14.1.7数字组合440
    14.2思维扩展算法443
    14.2.1蛇形打印443
    14.2.224点算法445
    14.2.3双色球随机摇号450
    14.2.4巧妙过桥453
    14.2.5猴子吃桃457
    14.2.6天平称物458
    14.2.7掷骰子游戏460
    14.3小结463
查看详情
您可能感兴趣 / 更多
系列丛书 / 更多
相关图书 / 更多