1 基本作业题目
1.1 (《数据结构题集(C语言版)》,第1章,第1.5题)试画出与下列程序段等价的框图。
(1)
- product=1; i=1;
- while (i<=n) {
- product*=i;
- i++;
- }
(2)
- i=0;
- do {
- i++;
- } while(i!=n) && (a[i]!=x));
(3)
- Switch {
- case x<y: z=y-x; break;
- case x==y: z=abs(x*y); break;
- default: z=(x-y)/abs(x)*abs(y);
- }
1.2 (《数据结构题集(C语言版)》,第1章,第1.8题)设n为正整数,试确定下列程序段中前置以记号@的语句的频度:
(1)
- i=1; k=0;
- while(i<=n-1){
- @ k+=10*i;
- i++;
- }
(2)
- i=1; k=0;
- do {
- @ k+=10*i;
- i++;
- } while (i<=n-1);
(3)
- i=1; k=0;
- while (i<=n-1) {
- i++;
- @ k+=10*i;
- }
(4)
- k=0;
- for (i=1;i<=n;i++) {
- for (j=i;j<=n;j++)
- @ k++;
- }
(5)
- for (i=1;i<=n;i++) {
- for (j=1;j<=i;j++) {
- for (k=1;k<=j;k++)
- @ x+=delta;
- }
- }
(6)
- i=1; j=0;
- while (i+j<=n) {
- @ if(i>j) j++;
- else i++;
- }
(7)
- x=n; y=0; //n不小于1
- while (x>=(y+1)*(y+1)) {
- @ y++;
- }
(8)
- x=91; y=100;
- while (y>0) {
- @ if (x>100) {
- x-=10; y--;
- } else x++;
- }
1.3 (《数据结构题集(C语言版)》,第1章,第1.10题)按增长率由小至大的顺序排列下列各函数:
2100, (3/2)n, (2/3)n, (4/3)n, nn, n3/2, n2/3, n!, n, log2n, n/logn2, log22n, log2(log2n), nlog2n, nlog2n
1.4 (《数据结构题集(C语言版)》,第1章,第1.12题)设有以下三个函数:f(n)=21n4+n2+1000, g(n)=15n4+500n3, h(n)=5000n3.5+nlogn,请判断以下断言正确与否:
(1)f(n)是O(g(n));
(2)h(n)是O(f(n));
(3)g(n)是O(h(n));
(4)h(n)是O(n3.5));
(5)h(n)是O(nlogn)。
2 基本作业题目解答
1.1 (《数据结构题集(C语言版)》,第1章,第1.5题)试画出与下列程序段等价的
(1)
(2)
(3)
1.2 (《数据结构题集(C语言版)》,第1章,第1.8题)设n为正整数,试确定下列程序段中前置以记号@的语句的频度:
(1)频度:n-1;
(2)频度:n-1;
(3)频度:n-1;
(4)频度:n+(n-1)+(n-2)+…+1=n(n+1)/2;
(5)频度:
(6)频度:n;
(7)频度:[n^1/2-1](取整)
(8)频度:1100
1.3 (《数据结构题集(C语言版)》,第1章,第1.10题)按增长率由小至大的顺序排列下列各函数:
1.4 (《数据结构题集(C语言版)》,第1章,第1.12题)设有以下三个函数:f(n)=21n4+n2+1000, g(n)=15n4+500n3, h(n)=5000n3.5+nlogn,请判断以下断言正确与否:
(1)f(n)是O(g(n)); 正确。f(n)=O(n^4 ),O(g(n))= n^4 ,所以正确
(2)h(n)是O(f(n));错误
(3)g(n)是O(h(n)); 错误
(4)h(n)是O(n3.5));正确
(5)h(n)是O(nlogn)。错误