数据结构概述
1.数据结构的研究内容:研究的是数据之间的彼此抽象的关系,不涉及具体的数据内容。
2.基本数据结构分为:线性表、树和图。
3.数据结构分为逻辑结构和物理结构。逻辑结构是抽象出来的理论模型,而物理结构是指实际存储在磁盘、内存等介质上的结构。前者是数学模型,后者是实际的。后者分为顺序存储结构和链式存储结构。
这些也没有什么太多可讲的,简单写一下概念。
ADT
抽象数据型。这是一种与具体语言无关的描述性语言。其实基本可以理解成一种混合了C和C++而不严格按照语法来的一种语言。因为C是众多语言的样板,C的很多语法在大量语言中都有体现,所以适合用来作为纯粹描述数据结构的语言。
算法
常见算法类型:递归、分治、模拟、贪心、状态空间搜索、随机、动态规划。
算法的特征:
①有穷性、②确定性、③输入、④输出、⑤能行性
“好”的算法的标准:
①正确性,算法能满足具体问题的需求
②可读性,首先方便阅读与交流,其次才是机器执行
③健壮性,输入错误时,能作出反应,避免异常出错
④效率与低存储量要求
这些还是比较虚了,而具体来说,复杂度是一个衡量算法水准的重要标准。
复杂度
复杂度分为时间复杂度和空间复杂度。T(n)=O(f(n)),S(n)=O(g(n))。
运算法则:
加法规则:T1(n)+T2(n)=O(max{f(n), g(n)})
乘法规则:T1(n)*T2(n)=O(f(n)g(n))
通常,表达式和赋值语句记为O(1)
语句序列:T(S1,S2……)=O(max{S1,S2...})
条件分支:T(if(B)S1,else(S2))=T(B)+T(else)+T(max{T(S1),T(S2)}),一般取T(B)+T(else)=O(1)
switch:T(switch条件)+T(每一个分支条件)+max{T(S1),T(S2),……}
循环:T( for(i=1;i<=n;i++) s )
=∑(T(s)+T(i=1)+T(i<=n)+T(i++)+T(for))
While类似
函数调用:计算相应函数的复杂度,一起算。如果是递归调用,那么求解递归方程(递归方程是什么我也不明白,囧)