新書推薦:

《
和虫虫面对面
》
售價:HK$
74.7

《
何谓明治(历史学堂)
》
售價:HK$
63.8

《
古典的别择(艺文志·古典)
》
售價:HK$
57.2

《
弱关联:在旅行中探寻检索词
》
售價:HK$
53.9

《
稷下先生(稷下学宫的历史探究,稷下先生的故事再现)
》
售價:HK$
74.8

《
我和她们不一样
》
售價:HK$
74.8

《
衰而不败:在变老的路上,变得更好
》
售價:HK$
54.8

《
先进电池高质量制造:标准化·大规模·智能化
》
售價:HK$
107.8
|
編輯推薦: |
本书系统介绍程序设计中各种常用的基础算法及典型案例,包括排序算法、递归算法、数论基础、组合数学基础、贪心算法、分治算法、动态规划算法和回溯算法等内容。
全书以图文并茂的方式讲解各基础算法的分析过程,侧重于基础算法的深入理解与实践,配有大量图表辅助算法的分析过程,适用于有一定程序设计基础、尚未学习数据结构且对算法分析与设计感兴趣的算法初学者。
本书配有典型案例和大量图表,既便于教师课堂讲授,也适合读者自学,可作为高等院校“程序设计基础”课程的延伸和“算法分析与设计”课程的入门教材,也可供程序设计竞赛初学者参考。
|
內容簡介: |
本书系统介绍程序设计中各种常用的基础算法及典型案例,包括排序算法、递归算法、数论基础、组合数学基础、贪心算法、分治算法、动态规划算法和回溯算法等内容。
來源:香港大書城megBookStore,http://www.megbook.com.hk 全书以图文并茂的方式讲解各基础算法的分析过程,侧重基础算法的深入理解与实践,配有大量图表辅助算法的分析过程,适用于有一定程序设计基础、尚未学习数据结构且对算法分析与设计感兴趣的算法初学者。
本书各章均配有典型案例和大量图表,既便于教师课堂讲授,也适合读者自学,可作为高等院校“程序设计基础”课程的延伸和“算法分析与设计”课程的入门教材,也可供程序设计竞赛初学者参考。
|
目錄:
|
第1章环境搭建1
1.1Microsoft Visual C 2010学习版的使用1
1.1.1Visual C 2010学习版的安装2
1.1.2创建、编辑、编译和运行项目4
1.1.3为什么缺少很多选项8
1.1.4为什么一闪而过9
1.1.5其他配置选项11
1.2Code∷Blocks的使用14
1.2.1安装Code∷Blocks14
1.2.2创建项目和编辑源代码16
1.2.3调试20
第2章排序算法23
2.1冒泡排序23
2.1.1冒泡排序的基本思想23
2.1.2冒泡排序过程分析24
2.1.3冒泡排序代码分析26
2.2选择排序28
2.2.1选择排序的基本思想28
2.2.2选择排序过程分析29
2.2.3选择排序代码分析30
2.3插入排序31
2.3.1插入排序的基本思想31
2.3.2插入排序过程分析32
2.3.3插入排序代码分析33
2.4计数排序35
2.4.1计数排序的基本思想35
2.4.2计数排序过程分析36
2.4.3计数排序代码分析38
2.4.4统计句子中字母出现的次数40
算法设计练习42第3章递归算法43
3.1汉诺塔问题43
3.1.1汉诺塔问题解题思路分析43
3.1.2汉诺塔问题代码分析45
3.2全排列问题46
3.2.1无重复元素的全排列47
3.2.2有重复元素的全排列49
3.3因数分解问题52
3.3.1因子递增方式递归求解53
3.3.2子问题分解方式递归求解54
3.3.3因数分解问题代码分析54
3.4分形图形56
3.4.1盒分形思路分析56
3.4.2盒分形代码分析57
算法设计练习59
第4章数论基础60
4.1余数和最大公约数60
4.1.1余数60
4.1.2最大公约数63
4.1.3欧几里得算法63
4.2素数问题65
4.2.1素数的概念65
4.2.2素数相关的定理65
4.2.3筛选法求素数66
4.3同余问题74
4.3.1同余及其性质74
4.3.2线性同余75
算法设计练习92
第5章组合数学基础94
5.1排列生成算法94
5.1.1序数生成法95
5.1.2字典序生成法99
5.1.3“火星人”问题100
5.2组合生成算法102
5.2.1基于字典序的组合生成算法103
5.2.2基于格雷码的组合生成算法107
算法设计练习116
第6章贪心算法117
6.1结构体117
6.2贪心算法概述119
6.3活动时间安排120
6.3.1活动安排过程分析121
6.3.2活动安排代码分析123
6.4最优装载问题125
6.4.1最优装载问题过程分析125
6.4.2最优装载问题代码分析126
6.5可切割背包问题128
6.5.1可切割背包问题分析128
6.5.2可切割背包代码分析130
6.6删数问题132
6.7操作系统内存分配134
6.7.1First Fit内存分配136
6.7.2Best Fit内存分配137
6.7.3Worst Fit内存分配139
算法设计练习141
第7章分治算法142
7.1快速排序143
7.1.1快速排序过程分析143
7.1.2快速排序代码分析144
7.2归并排序146
7.2.1归并排序过程分析146
7.2.2归并排序代码分析147
7.3二分查找149
7.3.1二分查找过程分析149
7.3.2二分查找代码分析150
7.4循环赛152
7.4.12k循环赛日程表152
7.4.2奇偶循环赛日程表155
7.5大整数乘法160
7.5.1大整数乘法过程分析160
7.5.2大整数乘法代码分析161
算法设计练习165第8章动态规划算法166
8.1数字三角形166
8.1.1使用朴素递归求解数字三角形问题167
8.1.2使用动态规划算法求解数字三角形问题168
8.2最长公共子序列175
8.2.1最长公共子序列问题过程分析175
8.2.2最长公共子序列问题代码分析176
8.3编辑距离180
8.3.1编辑距离的正向生成180
8.3.2操作序列的逆向回溯182
8.401背包问题(一)186
8.4.101背包问题过程分析186
8.4.201背包问题代码分析187
8.5石子合并191
8.5.1石子合并问题过程分析192
8.5.2石子合并问题代码分析193
算法设计练习201
第9章回溯算法202
9.1八皇后问题202
9.1.1八皇后问题过程分析202
9.1.2八皇后问题代码分析204
9.2子集和问题207
9.2.1子集和问题过程分析208
9.2.2子集和问题代码分析209
9.301背包问题(二)211
9.3.101背包问题过程分析211
9.3.201背包问题代码分析213
9.4装载问题216
9.4.1装载问题过程分析216
9.4.2装载问题代码分析216
9.5任务分配问题 219
9.5.1任务分配问题过程分析219
9.5.2任务分配问题代码分析219
算法设计练习222
参考文献224
|
內容試閱:
|
“算法分析与设计”的课程目标是培养运用数学思维和计算思维分析问题与应用所学专业知识解决问题的能力。通过对基础理论和典型案例的学习,读者能够掌握算法设计的方法和技巧,为后续数据结构等相关课程的学习及参加各类学科竞赛奠定基础。
在学习本书内容之前,读者应具备一定的编程基础,能够熟练运用C、C 、Java、Python等至少一门编程语言,无须具备数据结构基础知识。本书是程序设计基础和算法分析与设计之间的过渡,为刚刚学习过程序设计基础的算法入门者量身定制。
本书的主要特点是算法知识“基础化”和分析过程“图表化”,只要求读者具备程序设计基础知识,重在兴趣与入门,不涉及艰深晦涩的内容。以图表方式给出算法的动态分析过程,使读者能够真正理解和掌握算法的本质,能够根据实际工作设计和优化算法。
全书由9章构成,各章具体内容如下。
第1章: 环境搭建。主要介绍Windows操作系统下学习环境的搭建及注意事项。
第2章: 排序算法。介绍冒泡排序、选择排序、插入排序和计数排序等常见排序算法。
第3章: 递归算法。分析递归算法的本质特征,并通过递归算法求解汉诺塔、全排列、因数分解和分形图形问题。
第4章: 数论基础。介绍数论的基本概念及性质,分析素数和同余两类典型的数论基础问题。
第5章: 组合数学基础。介绍组合数学的基本概念和性质,分析排列和组合生成的典型算法。
第6章: 贪心算法。介绍结构体类型,分析活动时间安排、最优装载、可切割背包、删数问题及操作系统内存分配等典型贪心算法案例。
第7章: 分治算法。介绍分治算法的基本思想,应用分治思想求解快速排序、归并排序、二分查找、循环赛及大整数乘法问题。
第8章: 动态规划算法。介绍动态规划算法的特点和解题过程,利用动态规划算法求解数字三角形、最长公共子序列、编辑距离、01背包问题及石子合并问题。
第9章: 回溯算法。介绍回溯算法的解题思路,通过图表详细分析八皇后问题、子集和问题、01背包问题、装载问题及任务分配问题的探索和回溯过程。
算法分析与设计的核心是体会和实践,讲授是基础,实践是关键。本书提供各典型案例相关的全部源代码(C和C 版本,在Visual C 2010、Visual C 2019及Code∷Blocks中调试通过)。
本书由吉林师范大学教材出版基金资助,是授课教师多年教学经验的总结,但由于编者水平所限,书中难免存在遗漏和不足之处,敬请读者批评指正,在此表示诚挚谢意。
编者2025年1月
|
|