算法设计与分析
作者:张树东,罗宁,柳昊明
出版社:清华大学出版社
出版时间:2023-10-01
ISBN:9787302641308
定价:¥49.00
第1章算法基础/1
1.1算法概念与特征1
1.1.1算法概念1
1.1.2算法特征1
1.2数学基础1
1.2.1数学归纳法1
1.2.2取整函数3
1.2.3二项式定理5
1.2.4二项式系数6
1.2.5斐波那契数8
1.2.6生成函数8
1.3算法复杂性分析11
1.3.1算法复杂性概念11
1.3.2算法复杂性刻度标准11
1.3.3算法复杂性耗费标准12
1.3.4渐进表示12
1.3.5渐进记号的常用函数14
1.4排序算法16
1.4.1插入排序16
1.4.2希尔排序16
1.4.3选择排序17
1.4.4冒泡排序18
1.4.5合并排序19
1.4.6快速排序19
1.4.7排序算法的稳定性问题20
1.5递归与递推20
1.5.1递归20
1.5.2递推20
第2章信息结构/23
2.1线性表23〖1〗算法设计与分析目录〖3〗〖3〗2.1.1线性表的操作23
2.1.2栈和队列24
2.1.3表的存储24
2.1.4表的操作25
2.2树26
2.2.1树的定义26
2.2.2二叉树27
2.2.3二叉树的遍历28
2.3二叉搜索树29
2.3.1二叉搜索树的建立与插入29
2.3.2二叉搜索树的删除31
2.3.3二叉搜索树的查找32
2.3.4二叉搜索树操作算法复杂度分析33
2.4红黑树33
2.4.1定义34
2.4.2红黑树性质34
2.4.3树结构的调整35
2.4.4插入35
2.4.5删除38
2.5B树40
2.5.1定义40
2.5.2B树插入操作41
2.5.3B树删除操作43
2.6散列表46
2.6.1定义46
2.6.2散列表性能分析47
2.6.3散列函数47
2.7最小生成树47
2.7.1定义47
2.7.2Kruskal算法48
2.7.3Prime算法48
第3章分治法/50
3.1概念50
3.1.1分治法的基本思想50
3.1.2分治法所处理问题的基本特征51
3.1.3分治算法的实现思路51
3.2折半查找53
3.2.1问题描述53
3.2.2问题分析53
3.2.3问题求解53
3.2.4算法实现54
3.2.5折半查找判定树55
3.2.6算法复杂度分析55
3.3顺序统计56
3.3.1问题描述56
3.3.2问题分析56
3.3.3问题求解56
3.3.4算法实现56
3.3.5算法复杂度分析58
3.4大整数乘法58
3.4.1问题描述58
3.4.2问题分析58
3.4.3分治法求解问题59
3.4.4改进的分治法59
3.5最大子数组问题59
3.5.1问题描述59
3.5.2算法分析60
3.5.3分治法求解最大子数组问题60
3.5.4算法实现60
3.5.5算法复杂性分析61
3.6矩阵乘法61
3.6.1问题描述61
3.6.2问题分析62
3.6.3分治法求解矩阵相乘62
3.6.4Strassen算法实现矩阵乘法63
3.7递归式求解63
3.7.1问题描述63
3.7.2代入法求解递归式64
3.7.3递归树法求解递归式65
3.7.4主方法求解递归式66
3.8证明主定理67
3.8.1主定理67
3.8.2主定理递归树表示67
3.8.3主定理证明68
3.9马的周游路线问题73
3.9.1问题描述73
3.9.2问题分析73
3.9.3问题求解73
3.9.4求解过程74
3.10循环赛日程安排76
3.10.1问题描述76
3.10.2问题分析76
3.10.3问题求解76
3.10.4算法实现77
3.10.5算法复杂度分析78
第4章动态规划法/79
4.1概述79
4.1.1概念79
4.1.2算法实现79
4.1.3使用条件及特点80
4.2钢条切割问题81
4.2.1问题描述81
4.2.2问题分析81
4.2.3问题求解82
4.2.4算法实现82
4.2.5小结83
4.3矩阵连乘问题83
4.3.1问题描述83
4.3.2问题分析83
4.3.3问题求解83
4.3.4算法实现84
4.3.5复杂性分析84
4.4最长公共子序列问题85
4.4.1问题描述85
4.4.2问题分析85
4.4.3问题求解86
4.4.4算法实现86
4.4.5复杂性分析87
4.5最优二叉树搜索问题87
4.5.1问题描述87
4.5.2问题分析87
4.5.3问题求解88
4.5.4算法实现88
4.6单源最短路径问题89
4.6.1问题描述89
4.6.2问题分析90
4.6.3问题求解90
4.6.4算法实现91
4.7资源分配问题91
4.7.1问题描述91
4.7.2问题分析91
4.7.3问题求解91
4.7.4算法实现93
4.8多重配置系统可靠性问题93
4.8.1问题描述93
4.8.2问题分析94
4.8.3问题求解94
4.8.4算法实现95
4.9货郎担问题96
4.9.1问题描述96
4.9.2问题分析96
4.9.3问题求解96
4.9.4算法实现97
4.9.5复杂性分析98
4.10流水作业车间调度问题98
4.10.1问题描述98
4.10.2问题分析99
4.10.3问题求解99
4.10.4算法实现100
第5章贪心算法/101
5.1概念101
5.1.1贪心算法的基本要素101
5.1.2贪心算法的基本思想101
5.1.3贪心算法的实现过程101
5.1.4适用条件102
5.2背包问题102
5.2.1问题描述102
5.2.2问题求解102
5.2.3算法实现103
5.2.4算法分析104
5.3带时限的作业调度问题105
5.3.1问题描述105
5.3.2问题分析105
5.3.3以利润最大作为贪心策略106
5.3.4以最大时限作为贪心策略107
5.3.5快速调度法108
5.4最佳合并顺序109
5.4.1问题描述109
5.4.2问题分析109
5.4.3问题求解109
5.4.4算法实现110
5.4.5算法正确性证明111
5.5磁盘文件的最佳存储111
5.5.1问题描述111
5.5.2问题分析111
5.5.3问题求解112
5.5.4算法实现113
5.5.5算法分析113
5.6活动安排问题115
5.6.1问题描述115
5.6.2问题分析115
5.6.3问题求解116
5.6.4算法实现117
5.6.5算法分析117
5.7哈夫曼编码118
5.7.1概述118
5.7.2前缀码118
5.7.3哈夫曼编码方案119
5.7.4算法实现120
5.7.5算法分析120
5.8拟阵121
5.8.1拟阵定义121
5.8.2加权拟阵上的贪心算法122
5.8.3用拟阵求解带时限的作业调度问题123
第6章回溯法/125
6.1概述125
6.1.1概念125
6.1.2基本思想125
6.1.3回溯法的基本理论125
6.1.4实现步骤126
6.2n皇后问题127
6.2.1问题描述127
6.2.2问题分析127
6.2.3问题求解127
6.2.4算法实现128
6.3子集和问题129
6.3.1问题描述129
6.3.2问题分析129
6.3.3问题求解130
6.3.4算法实现132
6.4图的M着色问题133
6.4.1问题描述133
6.4.2问题分析133
6.4.3问题求解134
6.4.4算法实现135
6.4.5复杂度分析136
6.501背包问题136
6.5.1问题描述136
6.5.2问题分析136
6.5.3问题求解137
6.5.4算法实现138
6.6哈密顿回路问题140
6.6.1问题描述140
6.6.2问题分析140
6.6.3问题求解141
6.6.4算法实现142
6.7连续邮资问题143
6.7.1问题描述143
6.7.2问题分析143
6.7.3问题求解144
6.7.4算法实现144
第7章分支限界法/147
7.1概述147
7.1.1基本思想147
7.1.2与回溯法的区别147
7.1.3剪枝函数147
7.1.4实现步骤147
7.1.5求解目标148
7.1.6搜索策略148
7.1.7分支限界法的分类148
7.215迷问题149
7.2.1问题描述149
7.2.2问题分析149
7.2.3问题求解149
7.2.4算法实现152
7.2.5算法复杂度分析156
7.3货郎担问题157
7.3.1问题描述157
7.3.2问题分析157
7.3.3问题求解159
7.3.4算法实现161
7.401背包问题164
7.4.1问题描述164
7.4.2问题分析164
7.4.3问题求解165
7.4.4算法实现167
7.5同顺序任务加工问题170
7.5.1问题描述170
7.5.2问题分析170
7.5.3n项任务m台处理机任务启动时间171
7.5.4问题求解173
7.5.5算法实现174
7.5.6效率分析178
7.6最大团问题178
7.6.1问题描述178
7.6.2问题分析179
7.6.3问题求解179
7.6.4算法实现180
7.7装载问题182
7.7.1问题描述182
7.7.2问题分析182
7.7.3问题求解183
7.7.4算法实现185
7.8布线问题187
7.8.1问题描述187
7.8.2问题分析187
7.8.3问题求解188
7.8.4算法实现188
第8章概率分析和随机算法/193
8.1概念193
8.2随机数产生方法193
8.2.1随机数的概念193
8.2.2随机数的应用194
8.2.3随机数的产生方法194
8.2.4随机数生成195
8.2.5常见分布函数的随机数的产生196
8.3数值概率算法196
8.3.1用随机投点法计算π值197
8.3.2计算定积分197
8.3.3解非线性方程组198
8.4蒙特卡罗算法199
8.4.1蒙特卡罗算法思想199
8.4.2蒙特卡罗算法实现步骤199
8.4.3主元素问题200
8.4.4素数测试问题201
8.5拉斯维加斯算法203
8.5.1n皇后问题203
8.5.2随机排序205
8.5.3求解整数因子分解206
8.6舍伍德算法207
8.6.1元素选择问题208
8.6.2搜索有序表210
8.6.3跳跃表211
8.7生日悖论215
参考文献/217
第1章管理信息系统概述/1
1.1信息、管理、管理信息与系统1
1.1.1信息与数据1
1.1.2管理与管理信息3
1.1.3系统3
1.2信息系统4
1.2.1信息系统的概念4
1.2.2信息系统的类型4
1.2.3信息系统与管理5
1.3管理信息系统5
1.3.1管理信息系统的概念5
1.3.2管理信息系统的功能5
1.3.3管理信息系统的特征6
1.3.4管理信息系统的类型6
1.4管理信息系统的技术基础7
1.4.1数据处理技术7
1.4.2数据库技术8
1.4.3计算机网络技术8
1.5管理信息系统的开发原则、策略和方法8
1.5.1管理信息系统的开发原则8
1.5.2管理信息系统的开发策略9
1.5.3管理信息系统的开发方法9
1.6管理信息系统的典型案例11
1.6.1MIS支持沃尔玛创造商业奇迹11
1.6.2海尔集团: 信息化助力创造世界名牌公司12
小结12
习题13
第2章数据库高级编程/14
2.1SQL Server相关配置14
2.2使用ADO.NET访问数据库192.2.1连接数据库19
2.2.2对数据库进行添加、修改及删除操作20
2.2.3查询数据库中的数据22
2.2.4数据绑定控件25
2.3Entity Framework基础知识49
2.3.1从委托到Lambda49
2.3.2Entity Framework架构56
2.4使用Entity Framework访问数据库57
2.4.1Entity Framework的安装57
2.4.2创建数据库及实体对象模型57
2.4.3数据库增、删、改、查操作61
小结66
习题66
〖1〗算法设计与分析目录〖3〗〖3〗第3章系统架构/67
3.1三层架构简介67
3.2简单三层架构69
3.2.1数据访问层69
3.2.2数据访问通用类库77
3.2.3实体类库80
3.2.4业务逻辑层84
3.2.5表示层86
3.3工厂模式三层架构99
3.3.1接口类库设计100
3.3.2工厂类库设计102
3.3.3其他层的代码修改103
小结104
习题105
第4章ASP.NET MVC模式/106
4.1MVC模式简介106
4.2ASP.NET MVC工作原理108
4.3ASP.NET MVC控制器112
4.4ASP.NET MVC视图115
4.5ASP.NET MVC模型119
小结124
习题124
第5章前端框架Bootstrap/125
5.1Bootstrap简介125
5.1.1安装Bootstrap125
5.1.2Bootstrap的主要特性127
5.1.3Bootstrap在Visual Studio 2019中的应用128
5.2Bootstrap样式131
5.2.1网格系统131
5.2.2排版141
5.2.3表格143
5.2.4表单146
5.2.5按钮153
5.2.6图片156
5.3布局组件157
5.3.1字体图标157
5.3.2下拉菜单158
5.3.3输入框组159
5.3.4导航162
5.3.5其他组件164
5.4JavaScript164
5.4.1标签页内容165
5.4.2模态对话框168
5.4.3工具提示和弹出对话框171
小结173
习题173
第6章图书管理系统案例开发/174
6.1项目描述174
6.1.1项目背景174
6.1.2业务描述174
6.1.3用户描述175
6.2系统需求175
6.2.1需求描述175
6.2.2模块设计175
6.2.3数据库设计177
6.3系统实现180
6.3.1技术要点180
6.3.2主要功能模块及界面设计180
6.4程序打包193
小结199
习题199
第7章超市商品进销存管理系统案例开发/200
7.1系统需求200
7.2系统设计201
7.2.1模块设计201
7.2.2数据库设计201
7.3系统实现202
7.3.1实体数据模型202
7.3.2主界面模块203
7.3.3商品管理模块206
7.3.4进货管理模块211
7.3.5销售管理模块213
7.3.6库存统计模块215
7.4技术经验总结217
7.4.1技术总结217
7.4.2经验总结217
第8章在线考试系统案例开发/218
8.1项目概述218
8.2系统需求218
8.2.1业务描述218
8.2.2用户描述218
8.2.3功能分析219
8.3系统分析设计220
8.3.1模块设计220
8.3.2数据库设计220
8.4技术准备224
8.4.1Excel组件使用224
8.4.2数据库的随机排序方法226
8.4.3API的使用226
8.4.4注册表的使用227
8.4.5控件的代码生成法228
8.5实体类库实现228
8.5.1Student类229
8.5.2TestQuestion类230
8.5.3CreatePaperScheme类232
8.5.4TestPaper类233
8.5.5QuestionTypeScore类233
8.5.6Questions类234
8.5.7StudentAnswer类235
8.6数据访问层实现237
8.6.1DALStudent类237
8.6.2DALTestQuestion类238
8.6.3DALCreatePaperScheme类240
8.6.4DALTestPaper类241
8.6.5DALQuestionTypeScore类241
8.6.6DALQuestions类242
8.6.7DALStudentAnswer类243
8.7业务逻辑层实现246
8.7.1BLLStudent类246
8.7.2BLLTestQuestion类247
8.7.3BLLCreatePaperScheme类248
8.7.4BLLTestPaper类249
8.7.5BLLQuestionTypeScore类249
8.7.6BLLQuestions类250
8.7.7BLLStudentAnswer类251
8.8表示层实现253
8.8.1学生信息管理模块——“学生信息管理”窗体254
8.8.2学生信息管理模块——“学生信息编辑”窗体261
8.8.3题库管理模块——“题库管理”窗体263
8.8.4题库管理模块——“题库编辑”窗体269
8.8.5组卷模块274
8.8.6学生端主界面285
8.8.7学生考试模块288
8.9技术经验总结298
8.9.1技术总结298
8.9.2经验总结298
第9章高校实践课题管理系统案例开发/299
9.1项目描述299
9.2系统需求分析300
9.2.1总体需求300
9.2.2需求描述301
9.3系统设计308
9.3.1总体设计308
9.3.2业务流程建模309
9.4数据库设计与实现313
9.4.1数据库设计313
9.4.2数据库实现314
9.5系统实现318
9.5.1项目总体实现318
9.5.2实体及数据访问层实现320
9.5.3管理员模块实现324
9.5.4教师模块实现349
9.5.5学生模块实现370
9.6系统测试379
9.6.1学生管理测试用例379
9.6.2题库管理测试用例381
9.6.3课题选报测试用例385
9.7技术经验总结389
9.7.1技术总结389
9.7.2经验总结389
参考文献/390