
零基础学编程:零基础学算法
《零基础学编程:零基础学算法(第3版)》分为上、下两篇,共10章,上篇用5章的篇幅介绍了算法和数据结构的基础知识,包括基础算法思想、简单数据结构、複杂数据结构、排序和查找算法等内容;下篇用4章的篇幅介绍了用数据结构解决实际问题的相关程式,包括解决数学问题、数据结构问题、算法经典问题等内容以及信息学奥赛部分试题的程式,最后一章介绍了与算法和数据结构相关的常见面试题。
基本介绍
- 中文名:零基础学编程:零基础学算法
内容简介
《零基础学编程:零基础学算法(第3版)》案例实用性强、结构清晰、实例代码讲解详尽,可作为大中专院校学生学习数据结构,做课程设计的参考书,也可以作为有一定程式设计基础的程式设计师的参考书,还可作为参加信息学奥赛选手的参考书。
图书目录
前言
上篇算法与数据结构基础
第1章基础算法思想
1.1编程的灵魂:数据结构+算法
1.2算法的作用:猜价格游戏
1.2.1算法的作用
1.2.2实例:看商品猜价格
1.3枚举(穷举)算法思想
1.3.1算法思路
1.3.2实例:填数游戏
1.3.3实例:填运算符
1.4递推算法思想
1.4.1算法思路
1.4.2顺推实例:斐波那契数列
1.4.3逆推实例:该存多少钱
1.5递归算法思想
1.5.1算法思路
1.5.2实例:求阶乘
1.5.3实例:数制转换
1.6分治算法思想
1.6.1算法思路
1.6.2实例:桌球比赛日程安排
1.7贪婪算法思想
1.7.1算法思路
1.7.2实例:换零钱
1.8试探法算法思想
1.8.1算法思路
1.8.2实例:生成彩票号码组合
1.9模拟算法
1.9.1算法思路
1.9.2实例:猜数游戏
1.9.3实例:模拟掷骰子游戏
1.10算法的评价
1.10.1算法评价原则
1.10.2算法的效率
1.11上机实践
第2章简单数据结构
2.1最简单的结构:线性表
2.1.1线性表的概念
2.1.2操作顺序表
2.1.3操作鍊表
2.1.4实例:用鍊表製作通讯录
2.2后进先出结构:栈
2.2.1栈的概念
2.2.2操作栈
2.2.3实例:算术表达式求值
2.3先进先出结构:伫列
2.3.1什幺是伫列
2.3.2操作伫列
2.3.3循环伫列的操作
2.3.4实例:银行排号程式
2.4上机实践
第3章複杂数据结构
3.1层次关係结构:树
3.1.1树的概念
3.1.2二叉树的概念
3.1.3二叉树的存储
3.1.4操作二叉树
3.1.5遍历二叉树
3.1.6测试二叉树
3.1.7线索二叉树
3.1.8最优二叉树(赫夫曼树)
3.2网状关係:图
3.2.1图的定义和基本术语
3.2.2图的存储
3.2.3图的创建
3.2.4图的遍历
3.2.5最小生成树
3.2.6最短路径
3.3上机实践
第4章常用算法——排序
4.1排序概述
4.1.1排序算法分类
4.1.2数据準备
4.2冒泡排序法
4.2.1冒泡排序法概述
4.2.2改进的冒泡排序法
4.3快速排序法
4.3.1算法描述
4.3.2算法实现
4.4简单选择排序法
4.5堆排序法
4.5.1算法描述
4.5.2算法实现
4.6直接插入排序法
4.6.1算法描述
4.6.2算法实现
4.7希尔(Shell)排序法
4.7.1算法描述
4.7.2算法实现
4.8合併排序法
4.8.1算法描述
4.8.2算法实现
4.9排序算法的选择
4.9.1选择基準
4.9.2各种排序算法的优缺点
4.10上机实践
第5章常用算法——查找
5.1查找的基本概念
5.2简单查找
5.2.1顺序查找
5.2.2折半查找
5.3二叉排序树
5.3.1二叉排序树的定义
5.3.2插入节点
5.3.3查找节点
5.3.4删除节点
5.4索引查找
5.4.1索引的概念
5.4.2索引查找算法
5.5散列表
5.5.1散列表概述
5.5.2构造散列函式
5.5.3处理冲突
5.5.4创建和查找散列表
5.6上机实践
下篇用数据结构解决实际问题
第6章数学问题
6.1有趣的整数
6.1.1完数
6.1.2亲密数
6.1.3水仙花数
6.1.4自守数
6.1.5最大公约数和最低公倍数
6.2素数
6.2.1求素数
6.2.2迴文数
6.2.3哥德巴赫猜想
6.3阶乘
6.3.1用递归计算阶乘
6.3.2大数阶乘
6.4求7r的近似值
6.4.1机率法
6.4.2割圆法
6.4.3公式法
6.4.4计算任意位数的丌
6.5方程求解
6.5.1高斯消元法解线性方程组
6.5.2二分法解非线性方程
6.5.3牛顿叠代法解非线性方程
6.6矩阵的运算
6.6.1矩阵加法和乘法运算
6.6.2多维矩阵转一维矩阵
6.6.3逆矩阵
6.6.4稀疏矩阵
6.7—元多项式的运算
6.7.1多项式加法
6.7.2多项式减法
6.8上机实践
第7章数据结构问题
7.1约瑟夫环
7.2大整数四则运算
7.2.1使用数组进行大整数运算
7.2.2使用鍊表进行大整数运算
7.3进制转换
7.3.1进制转换的分析
7.3.2进制转换实现代码
7.4括弧匹配
7.5中序式转后序式
7.5.1后序表达式
7.5.2算法实现
7.5.3后序表达式求值
7.6停车场管理
7.6.1问题分析
7.6.2算法实现
7.7迷宫求解
7.7.1迷宫问题
7.7.2算法实现
7.7.3求迷宫所有路径
7.8LZW压缩的实现
7.8.1LZW的相关概念
7.8.2LZW压缩过程
7.8.3LZW压缩的实现
7.8.4LZW解压缩过程
7.8.5解压缩函式
7.8.6集成压缩和解压缩功能
7.9上机实践
第8章算法经典问题
8.1不定方程问题
8.1.1百钱买百鸡
8.1.2存钱利息最大化
8.1.3求阶梯数
8.1.4五家共井
8.1.5鸡兔同笼
8.2推算问题
8.2.1猴子吃桃
8.2.2舍罕王的赏赐
8.3魔术方阵
8.3.1简捷连续填数法
8.3.2双向翻转法
8.3.3井字调整法
8.4智力趣题
8.4.1汉诺塔
8.4.2背包问题
8.4.3马踏棋盘
8.4.4八皇后问题
8.4.5青蛙过河
8.4.6三色旗
8.5趣味游戏
8.5.1取石子游戏
8.5.2生命游戏
8.5.3洗扑克牌
8.5.4黑白棋
8.5.5凑24点游戏
8,5.610点半游戏
8.6上机实践
第9章信息学奥赛试题精解
9.1NOIP普及组试题精解
9.1.1求级数之和
9.1.2求素数组合
9.1.3计算卒的路线
9.1.4检查校验码
9.1.5排座位
9.1.6击鼓传花
9.1.7绘製模拟立体图
9.1.8公路上的树
9.1.9採药
9.1.10求等价表达式
9.1.11不开心的龙龙
9.1.12孙悟空摘桃
9.1.13FBI树
9.1.14外星人的语言
9.2NOIP提高组试题精解
9.2.1砝码称重
9.2.2阿明的零花钱
9.2.3购买年货
9.2.4调整队形
9.2.5均分纸牌
9.2.6最小矩形面积
9.2.7低价买股票
9.2.8数字金字塔
9.2.9方格取数
9.2.10飞弹防御系统
9.3上机实践
第10章常见面试题及解答
10.1数据结构类面试题
10.1.1选择题
10.1.2编程题
10.2经典算法类面试题
附录Dev—C++开发环境的使用
上篇算法与数据结构基础
第1章基础算法思想
1.1编程的灵魂:数据结构+算法
1.2算法的作用:猜价格游戏
1.2.1算法的作用
1.2.2实例:看商品猜价格
1.3枚举(穷举)算法思想
1.3.1算法思路
1.3.2实例:填数游戏
1.3.3实例:填运算符
1.4递推算法思想
1.4.1算法思路
1.4.2顺推实例:斐波那契数列
1.4.3逆推实例:该存多少钱
1.5递归算法思想
1.5.1算法思路
1.5.2实例:求阶乘
1.5.3实例:数制转换
1.6分治算法思想
1.6.1算法思路
1.6.2实例:桌球比赛日程安排
1.7贪婪算法思想
1.7.1算法思路
1.7.2实例:换零钱
1.8试探法算法思想
1.8.1算法思路
1.8.2实例:生成彩票号码组合
1.9模拟算法
1.9.1算法思路
1.9.2实例:猜数游戏
1.9.3实例:模拟掷骰子游戏
1.10算法的评价
1.10.1算法评价原则
1.10.2算法的效率
1.11上机实践
第2章简单数据结构
2.1最简单的结构:线性表
2.1.1线性表的概念
2.1.2操作顺序表
2.1.3操作鍊表
2.1.4实例:用鍊表製作通讯录
2.2后进先出结构:栈
2.2.1栈的概念
2.2.2操作栈
2.2.3实例:算术表达式求值
2.3先进先出结构:伫列
2.3.1什幺是伫列
2.3.2操作伫列
2.3.3循环伫列的操作
2.3.4实例:银行排号程式
2.4上机实践
第3章複杂数据结构
3.1层次关係结构:树
3.1.1树的概念
3.1.2二叉树的概念
3.1.3二叉树的存储
3.1.4操作二叉树
3.1.5遍历二叉树
3.1.6测试二叉树
3.1.7线索二叉树
3.1.8最优二叉树(赫夫曼树)
3.2网状关係:图
3.2.1图的定义和基本术语
3.2.2图的存储
3.2.3图的创建
3.2.4图的遍历
3.2.5最小生成树
3.2.6最短路径
3.3上机实践
第4章常用算法——排序
4.1排序概述
4.1.1排序算法分类
4.1.2数据準备
4.2冒泡排序法
4.2.1冒泡排序法概述
4.2.2改进的冒泡排序法
4.3快速排序法
4.3.1算法描述
4.3.2算法实现
4.4简单选择排序法
4.5堆排序法
4.5.1算法描述
4.5.2算法实现
4.6直接插入排序法
4.6.1算法描述
4.6.2算法实现
4.7希尔(Shell)排序法
4.7.1算法描述
4.7.2算法实现
4.8合併排序法
4.8.1算法描述
4.8.2算法实现
4.9排序算法的选择
4.9.1选择基準
4.9.2各种排序算法的优缺点
4.10上机实践
第5章常用算法——查找
5.1查找的基本概念
5.2简单查找
5.2.1顺序查找
5.2.2折半查找
5.3二叉排序树
5.3.1二叉排序树的定义
5.3.2插入节点
5.3.3查找节点
5.3.4删除节点
5.4索引查找
5.4.1索引的概念
5.4.2索引查找算法
5.5散列表
5.5.1散列表概述
5.5.2构造散列函式
5.5.3处理冲突
5.5.4创建和查找散列表
5.6上机实践
下篇用数据结构解决实际问题
第6章数学问题
6.1有趣的整数
6.1.1完数
6.1.2亲密数
6.1.3水仙花数
6.1.4自守数
6.1.5最大公约数和最低公倍数
6.2素数
6.2.1求素数
6.2.2迴文数
6.2.3哥德巴赫猜想
6.3阶乘
6.3.1用递归计算阶乘
6.3.2大数阶乘
6.4求7r的近似值
6.4.1机率法
6.4.2割圆法
6.4.3公式法
6.4.4计算任意位数的丌
6.5方程求解
6.5.1高斯消元法解线性方程组
6.5.2二分法解非线性方程
6.5.3牛顿叠代法解非线性方程
6.6矩阵的运算
6.6.1矩阵加法和乘法运算
6.6.2多维矩阵转一维矩阵
6.6.3逆矩阵
6.6.4稀疏矩阵
6.7—元多项式的运算
6.7.1多项式加法
6.7.2多项式减法
6.8上机实践
第7章数据结构问题
7.1约瑟夫环
7.2大整数四则运算
7.2.1使用数组进行大整数运算
7.2.2使用鍊表进行大整数运算
7.3进制转换
7.3.1进制转换的分析
7.3.2进制转换实现代码
7.4括弧匹配
7.5中序式转后序式
7.5.1后序表达式
7.5.2算法实现
7.5.3后序表达式求值
7.6停车场管理
7.6.1问题分析
7.6.2算法实现
7.7迷宫求解
7.7.1迷宫问题
7.7.2算法实现
7.7.3求迷宫所有路径
7.8LZW压缩的实现
7.8.1LZW的相关概念
7.8.2LZW压缩过程
7.8.3LZW压缩的实现
7.8.4LZW解压缩过程
7.8.5解压缩函式
7.8.6集成压缩和解压缩功能
7.9上机实践
第8章算法经典问题
8.1不定方程问题
8.1.1百钱买百鸡
8.1.2存钱利息最大化
8.1.3求阶梯数
8.1.4五家共井
8.1.5鸡兔同笼
8.2推算问题
8.2.1猴子吃桃
8.2.2舍罕王的赏赐
8.3魔术方阵
8.3.1简捷连续填数法
8.3.2双向翻转法
8.3.3井字调整法
8.4智力趣题
8.4.1汉诺塔
8.4.2背包问题
8.4.3马踏棋盘
8.4.4八皇后问题
8.4.5青蛙过河
8.4.6三色旗
8.5趣味游戏
8.5.1取石子游戏
8.5.2生命游戏
8.5.3洗扑克牌
8.5.4黑白棋
8.5.5凑24点游戏
8,5.610点半游戏
8.6上机实践
第9章信息学奥赛试题精解
9.1NOIP普及组试题精解
9.1.1求级数之和
9.1.2求素数组合
9.1.3计算卒的路线
9.1.4检查校验码
9.1.5排座位
9.1.6击鼓传花
9.1.7绘製模拟立体图
9.1.8公路上的树
9.1.9採药
9.1.10求等价表达式
9.1.11不开心的龙龙
9.1.12孙悟空摘桃
9.1.13FBI树
9.1.14外星人的语言
9.2NOIP提高组试题精解
9.2.1砝码称重
9.2.2阿明的零花钱
9.2.3购买年货
9.2.4调整队形
9.2.5均分纸牌
9.2.6最小矩形面积
9.2.7低价买股票
9.2.8数字金字塔
9.2.9方格取数
9.2.10飞弹防御系统
9.3上机实践
第10章常见面试题及解答
10.1数据结构类面试题
10.1.1选择题
10.1.2编程题
10.2经典算法类面试题
附录Dev—C++开发环境的使用