0.前言
学习目的:学习数据结构,就是要学会高效地利用计算机
(1)有效地存储、组织、传递和转换数据
(2)掌握各类数据结构功能、表示、实现和基本操作接口
(3)理解各类(基本)算法与不同数据结构之间的内在联系
(4)了解各类数据结构适用的应用环境
(5)灵活地选用各类(基本)算法及对应的数据结构,解决实际问题
内容纵览:
(1)各数据结构的ADT接口及其不同实现
序列(向量、列表、栈、队列),树及搜索树(AVL树、伸展树、红黑树、B-树、kd-树),优先队列(堆)、字典(散列表、跳转表),图的算法与应用
(2)构造有效算法模块的常用技巧
顺序和二分查找,选取与排序,遍历,模式匹配,散列,几何查找
(3)算法设计的典型策略与模式
迭代、贪心、递归、分治、减治、试探—剪枝—回溯、动态规划
(4)复杂度分析的基本方法
渐进分析与相关记号、递推关系、递归跟踪、分摊分析、后向分析
1.算法概念
**计算=信息处理(借助某种工具,遵照一定规则,以明确而机械的形式进行)
**计算模型=计算机=信息处理工具
**所谓算法,即特定计算模型下,旨在解决特定问题的指令序列
输入 待处理的信息(问题)
输出 经处理的信息(答案)
正确性 的确可以解决指定的问题
确定性 任一算法都可以描述为一个由基本操作组成的序列
可行性 每一基本操作都可实现,且在常数时间内完成
有穷性 对于任何操作,经有穷次基本操作,都可以得到输出
2.Hailstone冰雹序列(C++实现)
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
int hailstone(int n);
int main()
{
int n;
cout << "Please enter the number: ";
cin >> n;
int length = hailstone(n);
cout << "Please display the length: " << length << endl;
return 0;
}
int hailstone(int n) //计算序列Hailstone(n)的长度
{
int length = 1; //从1开始,以下按定义逐步递推,并累计步数,直至n=1
while (1 < n)
{
n % 2 ? n = 3 * n + 1 : n /= 2;
length++;
}
return length;
}
3.计算模型—图灵机模型
图灵机实例: