更新时间:2020-04-14 15:10:36
封面
版权信息
内容提要
前言
资源与支持
第1章 算法概述
1.1 算法的基础
1.1.1 算法的特征
1.1.2 何为算法
1.2 计算机中的算法
1.2.1 认识计算机中的算法
1.2.2 为什么说算法是程序的灵魂
1.3 计算机中表示算法的方法
1.3.1 用流程图表示算法
1.3.2 用N-S流程图表示算法
1.3.3 用计算机语言表示算法
1.4 学习建议
第2章 数据结构
2.1 使用列表
2.1.1 列表的基本用法
2.1.2 删除列表中的重复元素并保持顺序不变
2.1.3 找出列表中出现次数最多的元素
2.1.4 排序类定义的实例
2.1.5 使用列表推导式
2.1.6 命名切片
2.2 使用元组
2.2.1 创建并访问元组
2.2.2 修改元组
2.2.3 删除元组
2.2.4 使用内置方法操作元组
2.2.5 将序列分解为单独的变量
2.2.6 将序列分解为单独的变量
2.2.7 实现优先级队列
2.3 使用字典
2.3.1 创建并访问字典
2.3.2 添加、修改、删除字典中的元素
2.3.3 映射多个值
2.3.4 使用OrderedDict创建有序字典
2.3.5 获取字典中的最大值和最小值
2.3.6 获取两个字典中相同的键值对
2.3.7 使用函数itemgetter()对字典进行排序
2.3.8 使用字典推导式
2.3.9 根据记录进行分组
2.3.10 转换并换算数据
2.3.11 将多个映射合并为单个映射
第3章 常用的算法思想
3.1 枚举算法思想
3.1.1 枚举算法基础
3.1.2 实践演练——24点游戏
3.1.3 实践演练——计算平方根
3.2 递归算法思想
3.2.1 递归算法基础
3.2.2 实践演练——解决“斐波那契数列”问题
3.2.3 实践演练——解决“汉诺塔”问题
3.2.4 实践演练——解决“阶乘”问题
3.3 分治算法思想
3.3.1 分治算法基础
3.3.2 实践演练——求顺序表中的最大值
3.3.3 实践演练——判断某个元素是否在列表中
3.3.4 实践演练——找出一组序列中第k小的元素
3.4 贪心算法思想
3.4.1 贪心算法基础
3.4.2 实践演练——解决“找零”问题
3.4.3 实践演练——解决“汽车加油”问题
3.5 试探算法思想
3.5.1 试探算法基础
3.5.2 实践演练——解决“八皇后”问题
3.5.3 实践演练——解决“迷宫”问题
3.6 迭代算法思想
3.6.1 迭代算法基础
3.6.2 实践演练——解决“非线程方程组”问题
3.7 技术解惑
3.7.1 衡量算法的标准是什么
3.7.2 递推和递归有什么差异
3.7.3 总结分治算法能解决什么类型的问题
3.7.4 分治算法的机理是什么
3.7.5 为什么说贪婪算法并不是解决问题的最优方案
3.7.6 回溯算法会影响算法效率吗
3.7.7 递归算法与迭代算法有什么区别
第4章 线性表、队列和栈
4.1 线性表操作
4.1.1 线性表的特性
4.1.2 顺序表操作
4.1.3 实践演练——实现线性表顺序存储的插入操作
4.1.4 实践演练——实现线性表顺序存储的删除操作
4.1.5 实践演练——顺序表的插入、检索、删除和反转操作
4.2 链表操作
4.2.1 什么是链表
4.2.2 实践演练——实现完整链表操作
4.2.3 实践演练——在链表中增加比较功能
4.2.4 实践演练——单链表结构字符串
4.3 先进先出的队列
4.3.1 什么是队列
4.3.2 Python语言的队列操作
4.3.3 实践演练——完整的顺序队列的操作
4.3.4 实践演练——基于列表实现的优先队列
4.3.5 实践演练——基于堆实现的优先队列
4.4 后进先出的栈
4.4.1 什么是栈
4.4.2 顺序栈