1-1 (neuDS)数据的物理结构是指数据在计算机中的实际存储形式。 T
1-2 N^2/1000 is O(N). F
1-3 2^N 和 N^N具有相同的增长速度。 F
1-4 算法分析的两个主要方面是时间复杂度和空间复杂度的分析。 T
1-5 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构。F
1-6 (neuDS)算法必须有输出,但可以没有输入. T
1-7 算法独立于具体的程序设计语言,与具体的计算机无关。T`
1-8 用渐进表示法分析算法复杂度的增长趋势。 T
1-9 O(n^2),O(1+2+···+n) 对应的算法时间复杂度相同。T
1-10 数据的逻辑结构与数据元素本身的内容和形式无关。 T
1-11 数据项是数据的最小单位。 T
1-12 数据元素是数据的最小单位。 F
1-13 数据的逻辑结构是指数据的各数据项之间的逻辑关系。 F
1-14 数据结构概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。 T
1-15 数据结构的抽象操作的定义与具体实现有关。 F
1-16 抽象数据类型与计算机内部表示和实现无关。T
1-17关于《数据结构》学科《数据结构》是一门研究数值计算的程序设计问题的学科 。
F
1-18 logN^2 is O(N). T
1-19 n^0.01 is O(logn). F
2-1以下关于数据结构的说法中正确的是__A__。
A.数据结构的逻辑结构独立于其存储结构
B.数据结构的存储结构独立于该数据结构的逻辑结构
C.数据结构的逻辑结构唯一地决定了该数据结构的存储结构
D.数据结构仅由其逻辑结构和存储结构决定
2-2下面程序段的时间复杂度是(A)。
x=90;
y=100;
while(y>0)
if(x>100)
{ x=x-10; y–; }
else x++;
A.O(1)
B.O(N)
C.O(N^2)
D.O(log2 N)
2-3 某数据对象由三个元素A、B、C构成,元素间关系的集合为{,,
A.线性结构
B.树型结构
C.图结构
D.集合结构
2-4给定程序时间复杂度的递推公式:T(1)=1,T(N)=2T(N/2)+N。则程序时间复杂度是: C
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N^2)
2-5下列函数中,哪个函数具有最慢的增长速度:B
A.N^1.5
B.NlogN^2
C.N2logN
D.N(logN)2
2-6下面的程序段违反了算法的(A)原则。
void sam()
{
int n=2;
while (n%2==0) n+=2;
printf(“%d”,n);
}
A.有穷性
B.确定性
C.可行性
D.健壮性
2-7执行下面程序段时,执行S语句的频度为(D)。
for(int i=0;i<n;i++)
for(int j=1;j<=i;j++)
S;
A.n^2
B.n^2/2
C.n(n+1)
D.n(n+1)/2
2-8算法分析的目的是(A)。
A.找出数据结构的合理性
B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进
D.分析算法的易懂性和文档性
2-9在存储数据时,通常不仅要存储各数据元素的值,而且还要存储(C)。
A.数据的处理方法
B.数据元素的类型
C.数据元素之间的关系
D.数据的存储方法
2-10下面程序的时间复杂度为(C)。
for(i = 0; i < m; i++)
for(j = 0; j < n; j++ )
A[i][j] = i*j;
A.O(m^2)
B.O(n^2)
C.O(m × n)
D.O(m + n)
2-11下面程序的时间复杂度为(A)。
for(i = 0; i < m; i++)
for(j = 0; j < t; j++)
c[i][j] = 0;
for(i = 0; i < m; i++)
for(j = 0; j < t; j++)
for(k = 0; k < n; k++)
c[i][j] = c[i][j]+a[i][k] * b[k][j];
A.O(m × n × t)
B.O(m + n + t)
C.O(m + n × t)
D.O(m × t + n)
2-12某算法的时间复杂度是O(n^2),表明该算法的(D )。
(2分) A.问题规模是n^2
B.问题规模与n^2成正比
C.执行时间等于n^2
D.执行时间与n^2成正比
2-13以下程序段的时间复杂度是 B
for (int i = 0; i * i < n; i++) {
printf("%d\n", i);
}
A.O(n)
B.O(√n)
C.O(n2)
D.O(nlgn)
2-14数据在计算机内存中的表示是指(A) 。
A.数据的存储结构
B.数据结构
C.数据的逻辑结构
D.数据元素之间的关系
2-15下列关于数据的逻辑结构的叙述中,(A)是正确的。
A.数据的逻辑结构是数据元素间关系的描述
B.数据的逻辑结构反映了数据在计算机中的存储方式
C.数据的逻辑结构分为顺序结构和链式结构
D.数据的逻辑结构分为静态结构和动态结构
2-16以下有关算法的说法中错误的是(A)。
A.算法和程序都独立于具体的计算机和具体的编程语言
B.程序是用编程语言表述的算法
C.流程图是算法的图形化描述
D.程序表述算法,但算法不一定就是程序
2-17算法分析的目的是(C )。
A.找出数据结构的合理性
B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进
D.分析算法的可读性和简明性
2-18对算法分析的前提是(B )。
A.算法必须简单
B.算法必须正确
C.算法结构性强
D.算法必须通用
2-19算法设计的要求
设计一个好的算法应该满足正确性、▁▁B▁▁▁、健壮性和高效性等要求。
A.可用性
B.可读性
C.可靠性
D.可行性
2-20下面代码段的时间复杂度是(B)。
for ( i=0; i<n; i++ )
for ( j=0; j<m; j++ )
a[i][j]=0;
A.O(1)
B.O(mn)
C.O(m^2)
D.O(n^2)
2-21下面代码段的时间复杂度是(B)。
x=0;
for( i=1; i<n; i++ )
for ( j=1; j<=n-i; j++ )
x++;
A.O(n)
B.O(n^2)
C.O(n^3)
D.O(2^n)
2-22下列代码
if ( A > B ) {
for ( i=0; i<N*N/100; i++ )
for ( j=N*N; j>i; j-- )
A += B;
}
else {
for ( i=0; i<N*2; i++ )
for ( j=N*3; j>i; j-- )
A += B;
}
的时间复杂度是:B
A.O(N^3)
B.O(N^4)
C.O(N^5)
D.O(N^6)
5-1测量算法的运行时间
下面的程序测量某个函数 F 的运行时间。
请在空白处填写适当内容,完成该程序。
#include
#include
int F(int x);
int main()
{
clock_t t1, t2;
double t;
int x, y;
printf("x = ? ");
scanf("%d", &x);
t1 =clock() (2分);
y = F(x);
t2 =clock() (2分);
t =(double)(t2-t1) / CLOCKS_PER_SEC (3分);
printf("y = %d\n", y);
printf("It took %.2f second(s)\n", t);
return 0;
}
int F(int x)
{
......
}
运行效果示例
x = ? 25
y = 3712
It took 1.25 second(s)
注:图中数据仅为样例,实际结果可能不同。