以下与数据的存储结构有关的术语是()
A.有序表
B.线性表
C.有向图
D.顺序表
正确答案是D.顺序表
存储结构
存储结构是数据的逻辑结构用计算机语言的实现,常见的存储结构有顺序存储,链式存储,索引存储以及散列存储。(其中散列所形成的存储结构叫做散列表,又叫哈希表)
因此,哈希表也是一种存储结构。
而栈,队列只是一种抽象数据类型,是一种逻辑结构。栈逻辑结构对应的顺序存储结构为顺序栈,对应的链式存储结构为链栈。队列的顺序存储结构是循环队列,链式存储结构是链队列,又叫做单链表,线性表逻辑结构对应的顺序存储结构为顺序表,对应的链式存储结构为链表。
而这里要注意,有序表不同于顺序表,顺序表是线性表的一种顺序存储结构。
有序表中的“有序”是逻辑意义上的有序,指表中的元素按某种规则已经排好了位置,既可以用链式存储又可以用顺序存储,所以只是一种逻辑上的有序而不是实际存储的方式,是逻辑结构。
顺序表中的“顺序”是物理意义上的,指线形表中的元素一个接一个的存储在一片相邻的存储区域中,最典型的例子就是数组。
数据逻辑结构与存储结构的关系
存储结构是逻辑结构用计算机语言的实现,逻辑结构独立于其存储结构,但逻辑结构不能唯一决定该数据的存储结构,如上题。
2.
`注意语句中,p*=i,仅对p的值有影响,而不该变i的值,语句频度仍为O(n)
3.
n趋于无穷时,T(n)/(n^2)为一个常数,故时间复杂度为O(n^2)
4.
与上题方法一样,n趋于无穷时,f(n)/n为一常数,故时间复杂度为O(n)
第一条语句
2^f(n)<=n,f(n)<=log2n,故时间复杂度为O(log2n),嵌套语句时间复杂度相乘即可得到结果
2^(f(n)+1)<=n/2,f(n)+1<=log2(n/2),f(n)<=log2(n/2)-1=log2n-2
故时间复杂度为O(log2n)
以下函数中,渐进时间复杂度最小的是
T1时间复杂度为O(nlog2n),T2时间复杂度为O(n^log3n),T3时间复杂度为O(n^2),T4时间复杂度为O(nlog2n)
虽然T1(n)=O(T4(n)),但T4中nlog2n是T1中的两倍,所以T1的渐进时间复杂度最低
某算法的时间复杂度是O(n),说明该算法的执行时间与n成正比
指数爆炸
m++执行次数
2+4+8+.........+2n=n(n+1)
位置固定,与n无关
用有向图即可解决
设语句频度为f(n)
1+2+3+.....+f(n)<n
(1+f(n))f(n)/2<n
解得时间复杂度为O(n^(1/2))
算法原地工作的含义是指需要额外的辅助空间为常量
该算法仅需要借助一个变量t,与问题规模n的大小无关,所以其空间复杂度为O(1)
算法的优劣与算法描述语言有关,但与所用计算机无关
程序=算法+数据结构
逻辑结构看的是数据元素之间的关系
插入、删除运输效率高是链表的优点
级别越高,需要额外执行的·条件就越多,效率也就越低
在很多情况下,数据元素的取值情况,排列情况不同,算法的执行时间也就不同
集合中任何两个数据元素之间都没有逻辑关系,组织形式松散
已知f(n)=O(g(n)),则必能推出g(n)=O(f(n))
n趋与无穷,f(n)/n为常数
ByeBye~