相关术语:
- 数据:
所有能被计算机所识别的符号集合
识别:输入,输出,存储,处理,显示
符号:数字,字母,汉字,语音,图形,图像
2、 数据元素:
是数据(集合)当中的一个“个体”
是数据讨论中的基本单位
2. 数据项:
是数据讨论的最小单位
5. 数据结构:
带结构的数据元素的集合
结构:数据元素之间的关系(即元素之间的运算和运算规则)
3. 逻辑结构:主要用于人们交流以及指导算法的分析和设计
7. 存储结构又称物理结构,主要用于算法的实现
顺序:借助数组
链式:借助数据元素地址的指针
因为顺序存储存取数据元素的速度非常快,其地址计算公式:
又因为每个数据访问的速度相同因此顺序结构又称随机存取结构逻辑结构为线性 的链式结构,如下图L:
注意:集合,线性,图,树结构的都既可以用顺序结构又可以用链式结构来存储数据和关系,至于用哪种主要取决于算法的实现和时间空间哪个更优。
存储结构可以单独使用也可以组合使用
- 数据结构的操作:又称运算
运算的定义建立在逻辑结构上,但是运算的实现建立在存储结构上
抽象数据类型不用考虑存储结构,所以可以用三元组来表示。
算法分析:
将语句执行次数称为计算步。
n为问题的规模
为了在分析时间复杂度时只分析规模的因素,而抛弃输入的因素,就有了如下规定:
只分析三种情况下(三种不同的输入)的时间复杂度
渐进上界记号O:表示f(n)的时间复杂度比g(n)小一个常数倍
渐进下界记号:表示f(n)的时间复杂度比g(n)大一个常数倍
紧渐进界记号:表示f(n)和g(n)的时间复杂度几乎相等
渐进性符号所代表的东西是一类集合
多项式的时间复杂度等于最高项的时间复杂度
对数的时间复杂度无论底是什么,其复杂度相等
对数时间复杂度低于次方时间复杂度
次方时间复杂度低于指数时间复杂度
i=1;
while(i<n)i+=i;
这里复杂度这里其实是2部分:i=1的复杂度是1,while的复杂度需要计算,肯定大于1,根据我们前面总结的顺序执行流程复杂度规则,整个复杂度取大的,应该是while循环的复杂度。while循环复杂度我们不会计算,但我们会计算循环次数:i的值变化是:1,2,4,8...2^k,最后一项i=2^(k-1)>=n退出循环,这时2^(k-1)>=n,k>=logn+1,所以循环k=logn+1次,则退出循环,所以时间复杂度就是O(logn)