数据结构C语言版算法时间复杂度计算
1.数据结构是一门研究非数值计算的程序设计问题中计算机的 A 以及它们之间的 _ B 和运算等的学科。
① A. 数据元素 B. 计算方法 C. 逻辑存储 D. 数据映象
② A. 结构 B. 关系 C. 运算 D. 算法
2.数据结构被形式地定义为(K,R),其中K是 B 的有限集,R是K上的 A 有限集。
① A. 算法 B. 数据元素 C. 数据操作 D. 逻辑结构
② A. 操作 B. 映象 C. 存储 D. 关系
3.在数据结构中,从逻辑上可以把数据结构分成____C____。
A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构
C. 线性结构和非线性结构 D. 内部结构和外部结构
4.算法分析的目的是 C ,算法分析的两个主要方面是 A 。
① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系
C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性
② A. 空间复杂度和时间复杂度 B. 正确性和简单性
C. 可读性和文档性 D. 数据复杂性和程序复杂性
5.计算机算法指的是 C ,它必须具备输入、输出和 C 等5个特性。
① A. 计算方法 B. 排序方法
C. 解决问题的有限运算序列 D. 调度方法
② A. 可执行性、可移植性和可扩充性
B. 可行性、确定性和有穷性
C. 确定性、有穷性和稳定性
D. 易读性、稳定性和安全性
三、填空题
1.下面程序段的时间复杂度是___O(n*m)____。
For (i=0;i<n;i++)
For (j=0;j<m;j++)
A[i][j]=0;
2.下面程序段的时间复杂度是___O(n^(1/2))____。
i=s=0
While(s<n)
{
i++; /* i=i+1 */
s+=i; /* s=s+i */
}
3.下面程序段的时间复杂度是___O(n^2)____。
s=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
s+=B[i][j];
sum=s;
4.下面程序段的时间复杂度是__O(log3 N)(注:对N取3的对数)_____。
i=1;
While (i<=n)
i=i*3;
数据结构算法题,合并两个链表的算法,计算时间复杂度。
简单,比较m和n的大小,选择小的那个链表,找到它的尾节点,然后把另一个链表的头连接到这个链表的尾,最后把hc赋值为当前链表的头,返回即可。
时间复杂度是min(m,n)+c,c是常数。
时间复杂度和语句频度有什么区别?(数据结构问题)望高手指点!!谢谢!
1.频度计算:
int sum1(int n){
int p=1,sum=0,i; //频度:1(或3,总之是个常数与n无关)
for(i=1;i<=n;i++){ //频度:n+1
p*=i; //频度:n
sum+=p; //频度:n
}
return(sum); //频度:1
}
该函的执行频度为:3n+3(或3n+5)
2.时间复杂度计算
依据“频度”可知该函数为n的一次方,可表示为O(n),也可表示为Θ(n);后者更准确。
3.(补充)求“时间复杂度”是目的,“频度”仅是手段,前者要依据后者的计算。
4.(补充)求算法的“时间复杂度”是为了估计和比较不同算法处理同一问题时的效率,只“估计”即可,不必也不可能准确得出计算时间(涉及不同硬件、系统软件和编译系统等)
5.(补充)算法的时间复杂度计算问题涉及渐近符的使用,去看专门的算法分析书籍。其中有两个重要规则:忽略低阶,忽略系数。
6."3n+3"与"3n+5"问题,当n很大时,执行的时间与+3还是+5无关。也就是"忽略低阶"。