1.可以用(抽象数据类型)定义一个完整的数据结构。
解析:抽象数据类型(ADT)描述了数据的逻辑结构和抽象运算,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示,从而构成一个完整的数据结构定义。
2.数据的逻辑结构独立于其逻辑结构。
解析:数据的逻辑结构是从面向实际问题的角度出发的,只采用抽象表达方式,独立于存储结构,数据的存储方式有多种不同的选择;而数据的存储结构是逻辑结构在计算机上的映射,它不能独立于逻辑结构二存在。
3.对于不同的数据结构,逻辑结构和物理结构可以完全相同。
例子:二叉树和二叉排序树
4.一个算法应该是问题求解步骤的描述
解析:算法的定义是问题求解步骤的描述。
5.已知两个长度分别为m和n的升序链表,若将它们合并为长度为m+n的一个降序链表,则最坏情况下的时间复杂度为(O(max(m,n)))
解析:两个升序链表合并,两两比较表中元素,每比较一次,确定一个元素的链接位置(取较小元素,头插法)。当一个链表结束后,将另一个链表的剩余元素插入即可。最坏情况是两个元素依次进行比较,为O(max(m,n))。
6.下列函数的时间复杂度为O(n^0.5)
int func(int n){
int i=0;
int sum=0;
while(sum<n)
sum+=++i;
return i;
}
解析:sum=0+1+2+...+i,所以sum为等差数列的和,为(i*(i+1))/2且sum<n,所以是O(n^0.5)。
7.算法原地工作是指算法所需的辅助空间是常量
8.在相同规模n下,复杂度为O(n)的算法在时间上总是优于复杂度为O(2^n)。
解析:时间复杂度是指渐进时间复杂度,不应该给n赋予一个特殊值。