新書推薦:
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
《
非对称创新:中国企业赶超战略 魏江 刘洋
》
售價:NT$
495.0
《
潜能觉醒
》
售價:NT$
395.0
《
初平:汉末群雄混战(190—195)
》
售價:NT$
245.0
《
建安:官渡大决战(196—200)
》
售價:NT$
245.0
《
权力的图像——近代的中国海图与交流
》
售價:NT$
840.0
《
中亚民族史
》
售價:NT$
840.0
《
人工智能与智能制造:概念与方法 [美]马苏德·索鲁什 [美]理查德·D.布拉茨
》
售價:NT$
640.0
|
內容簡介: |
本书精选计算思维与算法课程中核心的内容,采用丰富的图例阐述常用数据结构与算法的基础知识和基本概念,并结合范例诠释计算机科学中较为知名的分治法、贪心法、动态规划法、安全性算法、树结构的算法、改变程序功力的经典算法、游戏设计中的算法。为检验读者的学习成果,本书在每一章的*后都安排了与本章重点内容相关的习题,供读者操作演练,以培养读者的逻辑思维能力。
|
目錄:
|
目录
前言
第1章程序设计与计算思维1
1.1认识计算思维4
1.1.1分解6
1.1.2模式识别9
1.1.3模式概括与抽象11
1.1.4算法13
1.2算法的条件15
1.3课后习题21
第2章常用数据结构与算法22
2.1认识数据结构24
2.2常见的数据结构27
2.3矩阵与深度学习29
2.3.1稀疏矩阵33
2.3.2矩阵相加算法34
2.3.3矩阵相乘算法34
2.3.4转置矩阵35
2.4链表35
2.4.1单向链表的串接算法37
2.4.2单向链表节点的删除算法37
2.4.3在单向链表中添加新节点38
2.4.4单向链表的反转39
2.5堆栈40
2.6队列42
2.6.1双向队列44
2.6.2优先队列44
2.7树结构45
2.7.1树的基本概念46
2.7.2二叉树48
2.7.3树转化为二叉树的算法51
2.7.4二叉树转化为树的算法53
2.8图简介54
2.9哈希表57
2.10课后习题59
第3章分治法60
3.1分治法简介61
3.2递归法62
3.3汉诺塔算法63
3.4快速排序法68
3.5合并排序法70
3.6二分查找法71
3.7课后习题72
第4章贪心法74
4.1贪心法简介75
4.2最小生成树76
4.2.1Prim算法77
4.2.2Kruskal算法79
4.3图的最短路径法81
4.3.1Dijkstra算法81
4.3.2A* 算法83
4.3.3Floyd算法86
4.4课后习题88
第5章动态规划法90
5.1动态规划法简介91
5.2字符串对比功能93
5.3AOV网络与拓扑排序94
5.4AOE网络97
5.5青蛙跳台阶算法99
5.6课后习题101
第6章安全性算法102
6.1数据加密104
6.1.1对称密钥加密系统105
6.1.2非对称密钥加密系统与RSA算法106
6.1.3认证107
6.1.4数字签名107
6.2哈希算法109
6.2.1除留余数法109
6.2.2平方取中法111
6.2.3折叠法112
6.2.4数字分析法113
6.3碰撞与溢出处理113
6.3.1线性探测法114
6.3.2平方探测法114
6.3.3再哈希法115
6.4课后习题116
第7章树结构的算法118
7.1二叉树的遍历119
7.2二叉查找树122
7.3优化二叉查找树126
7.3.1扩充二叉树126
7.3.2哈夫曼树128
7.4平衡树(AVL树)129
7.5博弈树——八枚金币问题132
7.6堆积排序法134
7.7斐波那契查找法136
7.8课后习题139
第8章改变程序功力的经典算法141
8.1迭代法142
8.1.1帕斯卡三角算法143
8.1.2插入排序法145
8.1.3希尔排序法146
8.1.4基数排序法147
8.2枚举法148
8.2.13个小球放入盒子150
8.2.2质数求解算法152
8.2.3顺序查找法154
8.2.4冒泡排序法154
8.2.5选择排序法156
8.3回溯法158
8.3.1老鼠走迷宫158
8.3.2八皇后算法160
8.4课后习题161
第9章游戏设计中的算法163
9.1游戏中的数学与物理算法164
9.1.1两点距离的算法164
9.1.2匀速运动166
9.1.3加速运动167
9.2图的遍历算法168
9.2.1路径算法168
9.2.2深度优先查找算法170
9.2.3广度优先查找算法172
9.3碰撞处理算法173
9.3.1以行进路线来检测174
9.3.2范围检测176
9.3.3颜色检测179
9.4遗传算法182
9.5课后习题184
附录课后习题与参考答案185
|
內容試閱:
|
前言
程序设计课程越来越普及,让每一个学生拥有程序设计的能力是各大专院校在信息科学与技术教学方面的重点之一。当然,学习程序设计的目标不是把每个学习者都培养成专业的程序设计人员,而是帮助每一个人建立起系统化的逻辑思维模式和习惯。以往程序设计的实践目标非常重视“计算”能力,随着近年来因特网的高速发展,计算能力早已不是唯一的目标,程序设计课程着重于培养学习者的“计算思维”,也就是分析与分解问题的能力。
编写程序代码不过是整个程序设计过程中的一个阶段,在编写程序之前,有需求分析与系统设计两大阶段。计算思维是培养系统化逻辑思维的基础,有了这一基础在面对问题时才能具有系统分析与问题分解的能力,从中探索出可能的解决办法,并找出最有效的算法。
算法一直是计算机科学领域非常重要的基础课程,从程序设计语言实践的角度来看,算法是有志于从事信息技术方面工作的专业人员必须重视的一门基础理论课程。无论我们采用哪种程序设计语言来编写程序,所设计的程序能否快速而高效地完成预定的任务,其中的关键因素都是算法。对于将来不从事信息技术方面工作的人而言,学习算法同样可以培养自己系统化逻辑思维的习惯,这种思维习惯可以运用在各行各业中,让学习者终身受益。
本书精选计算思维与算法课程中核心的内容:第1章介绍程序设计与计算思维两者间的关系;第2章介绍常用数据结构与算法,包括数组、矩阵、链表、堆栈、队列、树、图及哈希表等数据结构,以及分治法、递归法、贪心法、动态规划法、迭代法、枚举法、回溯法等常见的算法;第3~9章针对分治法、贪心法、动态规划法、安全性算法、树结构的算法、改变程序功力的经典算法、游戏设计中的算法,逐一介绍计算机科学中较为知名的一些算法。
为了帮助更多人轻松地了解算法的精髓,本书采用丰富的图例阐述这些算法的基本概念,并结合范例诠释这些算法,期望读者学习之后可以将各种计算思维与算法真正运用于程序设计实践中。
为了检验读者的学习成果,每一章的最后都安排了与本章重点内容相关的习题,让读者有更多操作演练的机会。
最后,希望读者通过学习本书可以培养逻辑思维能力,进而在自己的工作和生活中获益。
本书主要由赵军编著,同时参与编写工作的还有王国春、施研然、王然、孙学南等。如果读者在学习过程中遇到无法解决的问题,或者对本书有意见或建议,可以通过邮箱booksaga@126.com与编者联系。
赵军
2019年1月
|
|