绪论
来源:互联网 发布:软件源代码 买卖 编辑:程序博客网 时间:2024/06/06 13:19
数据结构
数据结构(Data Structure)涉及数据的逻辑结构、数据的存储结构、数据的运算三个方面。
数据的逻辑结构
结点+关系(K,R)
结点,为基本的数据类型(integer, real, boolean, char, pointer)或复合数据类型(structure, string)
关系:
- 线性(linear),前后关系,大小关系
- 有向
- 单索
- 全序
- 树(tree),层次关系,父子关系
- root结点
- 二叉树
- 堆
- 图(graph),网络结构
存储结构
实质:建立映射,从逻辑结构(K,R)到存储单元
包括:
- 顺序
- 链接
- 索引
- 散列
数据的运算
包括:
- 增
- 删
- 改
- 查
- 排序
- 检索
抽象数据类型
- 抽象数据类型(abstract data type),用
Λ 表示,包括取值空间、访问方式、和运算集三个部分。
示例:vector的ADT
//vector的抽象数据类型template <class ELEM>class vector{private: ELEM &V[]; int maxLength; int currentSize;public: vector<ELEM> (); vector<ELEM> (int k); vector<ELEM> (int k,ELEM value); ~vector<ELEM>(); int size();}//矩阵的抽象数据类型template<class ELEM>class matrix{typedef vector<ELEM> Mrow;typedef vector<Mrow> Mmatrix;private: Mmatrix aMatrix; int maxLength;public: Mmatrix<ELEM>(); Mmatrix<ELEM>(int k); Mmatrix<ELEM>(int k,Mrow(k,value)); int size();}
应用
- 在设计算法之前往往先进行选择数据结构
- 注意数据结构的可扩展性
算法
概念
- 算法(algorithm):为了求解问题而给出的指令序列。
- 程序:算法的具体实现,计算机按照程序逐步执行算法,实现对问题的求解。
算法的性质
- 通用性
- 有效性
- 确定性
- 有穷性
算法的效率和复杂性
- 不可解问题
- 难解问题(组合爆炸型问题),不能再
nk 时间内解决问题。
举例:背包问题
每个背包的价值和空间:
(m1,w1),(m2,w2),⋯,(mn,wn)
有W 的总空间,如何选取得到的总价值最多?
算法分析
- 算法的渐进分析(asymptotic analysis):简称算法分析,估计计算机使用的时间资源和空间资源。
- 分析指标:问题的规模
n 分析方法:
- 大O表示法
- 单位时间:bool/算术运算,简单I/O,函数返回
- 加法规则(顺序、分支结构)
f1(n)+f2(n)=O(max(f1(n),f2(n))) - 乘法规则(循环结构)
f1(n)⋅f2(n)=O((f1(n)⋅f2(n)))
- 大
Θ 表示法- 对资源函数
T(n) 用F(n) 和两个正数限制(“等价”)
- 对资源函数
- 最坏情况估计
- 算法中的条件分支会影响复杂度的计算
- 不同的输入复杂度可能不同
- 最坏情况和平均情况可以作为衡量标准
- 给出了资源消耗的上限和下限
- 大O表示法
对动态数据结构,算法的存储空间变化的,也需要分析。
- 对时间资源和空间资源,采取时空折中。
- 评价标准:
- 易读、易编码、易调试
- 充分利用资源
参考王腾蛟数算课件
0 0
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- 绪论
- javax.servlet.jsp.JspException cannot be resolved to a type
- JSP九大内置对象
- 完美解决VX破解版本过期后重装无法使用的情况
- Graphviz和Pvtrace工具在Ubuntu下安装
- C++实现split,若有问题,请指正。(有用C实现过的,欢迎贴代码)
- 绪论
- TCP 传输层面试中常问的问题汇总(你所不知道的传输层)
- 智能手机软硬件维修从入门到精通——互动出版网
- 带界面的基于UDP传输多人聊天例子
- Android:控件WebView显示网页
- Android开发-通过ADB+Socket实现USB数据传输
- Activity的生命周期onSaveInstanceState onRestoreInstanceState 两个方法
- netstat samples
- 关于python文件操作