数据结构(Java版)习题解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A

I N D E X

练习题答案

第一章练习题答案(a) n+(n–1)+(n–2)+…+2+1

=

2)1

(+ n n (b) n+(n–1)+(n–2)+…+2+1

=

2

)1

(+

n

n

f(n)≦c.g(n) →f(n)=O(g(n))

(a) f(n)=100n+9

c=101, g(n)=n, n0=10

得知f(n)=O(n)

(b) f(n)=1000n2+100n–8

c=2000, g(n)= n2, n0=1

得知f(n)=O(n2)

(c) f(n)=5*2n+9 n2+2

c=10, n0=5

得知f(n)=O(2n)

f(n)≧c g(n) →f(n)=Ω(g(n)) (a) f(n)=3n+1

c=2, n0=1, g(n)=n

得知f(n)=Ω(n)(b) f(n)=100n2+4n+5

c=10, n0=1, g(n)= n2

得知f(n)=Ω(n2)

(c) f(n)=8*2n+8n+16

c=8, n0=1, g(n)= 2n

得知f(n)=Ω(n2)

c1.g(n)≦f(n)≦c2.g(n) →f(n)= Θ(g(n))

(a) f(n)=3n+2

c1=3, c2=6, n0=1

得知f(n) = Θ (n)

(b) f(n)=9n2+4n+2

c1=9, c2=16, n0=1

得知f(n) = Θ (n2)

(c) f(n)=8n4+5n3+5

c1=8, c2=20, n0=1

得知f(n) = Θ (n4)

A-2

练习题解答

第二章练习题答案

1. 分别以行为主和以列为主说明之。

(a) 以行为主

A(i, j)=l0+(i–1)*u2*d+(j–1)*d

(b) 以列为主

A(i, j)=l0+(j–1)*u1*d+(i–1)*d

2. 以列为主

A(i, j)=l0+(j–12)*md+(i–l1)d

m=u1–l1+1=5–(–3)+1=9

m=u2–l2+1=2–(–4)+1=7

A(1, 1) =100+(1–(–4))*9+(1–(–3))

=100+45+4=149

3. 分别以行为主和以列为主的说明。

由于数组为A(1:u1, 1:u2, 1:u3),因此p = u1-l1+1, q = u2- l2+1, r = u3- l3+1 所以p = u1-1+1 = u1, q = u2-1+1 = u2, r = u3-1+1 = u3

(a) 以行为主

A(i, j, k)=l0 + (i–1)*u2*u3*d + (j–1)*u3*d +(k-1)

(b) 以列为主

A(i, j, k)=l0 + (k–1)*u1*u2*d + (j–1)*u1*d + (i-1)*d

4. 以列为主:A(i, j, k)=l0 + (k–l3)*pqd + (j–l2)*pd + (i-l1)*d

p = 5-(-3) + 1 = 9, q = 2-(-4)+1 = 7, r = 5-1+1 = 5

A(2, 1, 2) = 100 + (2-1)*9*7*1 + (1-(-4))*9*1 + (2-(-3))*1

= 100 + 63 + 45 + 5 = 253

A-3

5. 以行为主:

A(i1, i2, i3, …, i n) = l0 +(i1–1)u2u3…u n

+(i2–1)u3u4…u n

+(i3–1)u4u5…u n

+(i n–1)

以列为主:

A(i1, i2, i3, …, i n)=l0+(i n–1)u1u2…u n-1

+(i n-1–1)u1u2…u n-2

+(i3–1)u4u5…u n

+(i2–1)*n1

+(i1–1)

2.2节练习题答案

1.

(a) 由上图知ptr+2为a[2]元素的地址,所以*(ptr+2)和a[2]表示的结果

是一样的,其值为2。

A-4

练习题解答

(b) a为指针常数,但ptr为指针变量,所以ptr可以用于递增或递减的

运算符,如ptr++,或ptr––,但a就不能使用此运算符,因为常数

不可以当做LVALUE。

2. // file name: binary_search.java

import java.io.*;

public class binary_search

{

static int[] A= {-9999,2,4,6,8,10,12,14,16,18,20};

static int count=0;

public static int binary_search(int key)

{

int i=1;

int j=10;

int k;

count=0;

do{

count++;

k = (i+j)/2;

if(A[k] == key)

break;

else if(A[k] < key)

i = k+1;

else

j = k-1;

}while(i<=j);

return count;

}

public static void main (String args[]) // 主函数

{

binary_search myApp = new binary_search();

System.out.println("Search 1, " + myApp.binary_search(1) +" times");

System.out.println("Search 3, "+ myApp.binary_search(3) + " times");

System.out.println("Search 13, "+ myApp.binary_search(13) + " times");

A-5

相关文档
最新文档