《算法分析与设计》期末复习题论文资料doc.docx

上传人:b****5 文档编号:8272457 上传时间:2023-01-30 格式:DOCX 页数:13 大小:35.99KB
下载 相关 举报
《算法分析与设计》期末复习题论文资料doc.docx_第1页
第1页 / 共13页
《算法分析与设计》期末复习题论文资料doc.docx_第2页
第2页 / 共13页
《算法分析与设计》期末复习题论文资料doc.docx_第3页
第3页 / 共13页
《算法分析与设计》期末复习题论文资料doc.docx_第4页
第4页 / 共13页
《算法分析与设计》期末复习题论文资料doc.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

《算法分析与设计》期末复习题论文资料doc.docx

《《算法分析与设计》期末复习题论文资料doc.docx》由会员分享,可在线阅读,更多相关《《算法分析与设计》期末复习题论文资料doc.docx(13页珍藏版)》请在冰豆网上搜索。

《算法分析与设计》期末复习题论文资料doc.docx

《算法分析与设计》期末复习题论文资料doc

一、选择题

1.

)个public类。

多个D.零个

B.问题求解步骤的描述

D.A和C

一个Java文件中可以有(

A.—个B.两个C.

2.一个算法应该是()

A.程序

C.要满足五个基本特性

3.用计算机无法解决“打印所有素数”的问题,其原因是解决该问题的算法违背了算法特征中的()

A.唯一性B.有穷性C・有0个或多个输入D.有输出

4.某校有6位学生参加学生会主席竞选,得票数依次为130,20,98,15,67,3。

若采用冒泡排序算法对其进

A.3,15,130,20,98,67

行排序,则完成第二遍时的结果是()

原始数据

130

20

98

15

67

3

第一遍

3

130

20

98

15

67

第二遍

第二遍

3

15

20

130

67

98

第四遍

3

15

20

67

130

98

第±L遍

3

15

20

67

98

130

B.3,15,20,130,98,67

5.

下列关于算法的描述,正确的是()

6.JavaApplication源程序的主类是指包含有()方法的类<>

A^main方法B、toString方法C^init方法D、actionPcrfromcd方法

7.找出满足各位数字之和等于5的所有三位数可采用的算法思路是()

A.分治法B.减治法C.童力法D.变治法

8.在编写JavaApplication程序时,若需要使用到标准输入输出语句,必须在程序的开头写上()语句。

A、importjava.awt.*;B、importjava.applet.Applet;

C、importjava.io.*;D、importjava.awt.Graphics;

9.计算某球队平均年龄的部分算法流程图如图所示,其中:

c用来记录己输入球员的人数,sum用来计算有效数据之和,d用来存储从键盘输入的球员年龄值,输入0时表示输入结束。

图中空白处理框①和②处应填入的是()

A.①sum—sum+dB.①

②C-C+1②

C.①sum—sum+dD.①

②d-d+1②

sum

sum+c

sum〜sum+c

d—d+1

10.报名参加冬季越野赛跑的某班5位学生的学号是:

5,生的过程中,依次被访问到的学号是()

8,11,

33,

45o利用折半查找,查找学号为33号学

A.5,11,33B.8,33C.11,45,33

11.表达式(short)8/9.2*5的值的类型为

A.shortB.intC.double

设x为int型变量,则执行一下语句段后,x的值为

D.11,33

D.

float

12.

x=10;

A.

13.

x+=x・=x・x;

10B.20

下列代码的执行结果是

C.40

D.

30

publicclassStringTest{

publicstaticvoidmain(Stringargs[])(inta=4,b=6,c=8;

Strings=”abc”;

System.out.println(a+b+s+c);

System.oul.printin();}

A.

14.

ababccB.464688

下列程序段执行后t3的结果是

C.46abc8

D.

10abc8

int

tl=2,t2=3,t3;

A.2

B.4

C.5

D.

15.要计算当0

A.if(0

〈10时,y=x,应当使用的语句是

B.it^0

 

16.对一组数据(2,12,16,88,第一趟:

2,12,16,88,5,第二趟:

2,5,16,88,12,第三趟:

2,5,10,88,12,则采用的排序方法是()

冒泡排序B.合并排序

类与对象的关系是()建筑图纸和建筑物的关系人与黑人的关系

5,10)进行排序,若前三趟排序结果如下,

10

10

16

A.

17.

B.

D.

18

C.快速排序D.选择排序

汽车与发动机的关系没有关系

JAVA语言二维数组定义中,第二维的长度(可以不相等

高维数组长度与低维数组长度相同

B.必须相等

D.固定长度

19.算法必须具备()这三个特性。

可执行性、可移植性、可扩充性确定性、有穷性、稳定性

B.可执行性、确定性、有穷性

D.易读性、稳定性、安全性

20.如下图所示,该流程图所表示的算法违背了算法的有穷性特征,下列修改方法中,可以改正该错误的是

 

A.将①处改为i-0

C.将③处改为i-i-2

B.将②处改为sN0?

D.将④处改为s-s-i

 

二、填空题

1.一个显而易见的事实是:

大部分算法的执行时间随若一输入昂易增加而增大。

2.算法是求解某一问题所使用的一系列清晰的指令。

3.算法分析时间效率模型的基本数学公式是:

T(n)QJC(n)。

4.算法设计技术是一用算法解题的一般性方法,用于解决不同计算领域的多种问题。

5.三个渐进符号:

O、a和e。

6.效率分析框架主要关心一个算法的基木操作次数的增长次数,并把它作为算法效率的主要指标。

7.Java源程序的文件名和程序中定义的主类名应保持一致,包括字母大小写的匹配。

8.算法中常见的问题类型包括:

排序、查找、字符串处理和组合问题等。

9.类中的构造方法是一个特殊的方法,其名称与类名相同。

10.面向对象程序设计语言中的3个重要特性分别是箜陞、继承和多态°

11.Java源程序文件的扩展名为java,编洋生成的字节码文件的扩展名为class。

12.大多数算法的效率可以分为常数、对数、线性、平方、立方和指数等。

三、简答题

1.什么是算法?

算法的五个重要特征是什么?

答:

算法是求解某一问题所使用的一系列清晰的指令。

答:

(1)输入:

有零个或多个山外部提供的量作为算法的输入.

(2)输出:

算法产生至少一个鬲作为输出.

(3)确定性:

组成算法的每条指令是清晰的,无歧义的.

(4)有限性:

在执行了有穷步骤后运算终止.

(5)可行性:

运算都是基本运算,原理上能在有限时间内完成.

2.请简述蛮力算法的优点?

答:

童力算法是一种简单直接地解决问题的方法。

童力法具有如下优点:

(1)应用范围广:

(2)不受实例规模的限制:

(3)当要解决的问题实例不多,设计更高效算法的代价太大时可选用:

(4)对解决一些小规模的问题实例仍然有效:

(5)可作为衡量其他算法的参照物。

3.算法设计与分析过程的典型步骤都包括哪些?

答:

(1)了解问题的内容

(2)了解计算设备的性能

(3)在精确解法和近似解法之间选择

(4)确定适当的数据结构

(5)算法设计技术

(6)详细表述算法的方法

(7)证明算法的正确性

(8)分析算法

(9)为算法写代码

4.请简述分治法的基本思路?

答:

将规模为N的问题分解为k个规模较小的了问题,使这些K问题相互独立可分别求解,再将k个「问题的解合并成原问题的解。

如子问题的规模仍很大,则反复分解直到问题小到可直接求解为止。

在分治法中,了问题的解法通常.与原问题相同,自然导致递归过程。

5.请简述减治法的基本思路?

答:

减治技术利用了…个问题给定实例的解和同样问题较小实例的解之间的某种关系。

•-旦建立了这种关系,既可以从顶至底(递归地),也可以从底至顶(非递归地)来运用该关系。

减治法有三种主要的变种:

■减常数(如1):

:

每此迭代规模减小n^n-1

■减因子(如1/2):

每此迭代规模减半n-n/2

■减可变规模:

将此迭代减小的规模不同

6.请简述递归算法设计的基本思路?

答:

递归的执行过程山分解过程和求值过程两部分构成。

实际上,递归思路是把一个不能或不好直接求解的“大问题”转化成一个或几个“小问题”来解决,再把这些“小问题”进一步分解成更小的“小问题”来解决,如此分解,K至每个“小问题”都可以宜接解决(此时分解到递归出匚I)。

但递归分解不是随意的分解,递归分解要保证“大问题”与“小问题”相似,即求解过程与环境都相似。

并且有一个分解的终点。

从而使问题可解。

7.请简述变治法的基本思路?

答:

变治法的技术基于变换思想。

变治法分为两个阶段的工作:

首先在“变”的阶段,出于这样或那样的原因,将问题的实例变得更容易求解:

然后是“治”的阶段,对问题的实例进行求解。

根据对问题实例的变换方式不同,变治法有三种主要的类型:

(1)实例化简一变换为同样问题的一个更简单或者更方便的实例;

(2)改变表现——变换为同样实力的不同表现;

(3)问题化简——变换为另一个问题的实例,这种问题的算法是己知的。

8.请简述时空权衡法的基本思路?

答:

时空权衡法的基本思路是对问题的部分或全部输入做预处理,然后对得到的额外信息使用额外的存储空间来存储。

通过实现更快或更方便的数据存取,以加速后面问题的求解来提高算法的效率。

四、算法实现题

1.对于任意非负整数n,计算阶乘函数F(n)=n!

的值。

因为当nN1时,n!

=1X2X3X……X(n-1)Xn=(n-1)!

Xno并且根据定义,0!

=1,所以可以使用下面的递归算法计算n!

F(n)=F(n-l)Xn。

请编写Java应用程序,由键盘输入n的值,在屏幕上输出计算的n!

的结果。

importjava.io.*;

publicclassFN

staticlongf{intn)

longr=I;

if(n!

=0)

r=n*Rn・l);

returnr;

}

publicstaticvoidmain(Stringargs[])throwslOException

{

〃输入N的值

byte[]buf=newbyte[10];

Syslem.out.println("in输入一个整数:

");

System.in.read(buf);

Stringstr=newString(buf);

intn=Intcgcr.parscTnt(str.trim());

〃计算N!

的值

longresult=Rn);

〃输出结果

System.out.println(n+"!

="+result);

i

}

2.斐波那契数列:

0,1,1,2,3,5,8,13,21,34,

这个数列可以用一个简单的递推式和两个初始条件来定义:

当n>1时,F(n)=F(n-1)+F(n-2)

F(0)=0,F

(1)=1

请编写Java应用程序,由键盘输入n的值代表要生成斐波那契数列的项数,在屏幕上输出n项斐波那契数列。

importjava.io.*;

publicclassFb(

/*斐波那契数列算法*/

intRinln){

intr;

if(n<=1)

r=n;

else

r=Rn-I)+l|n-2);

returnr;

}

publicstaticvoidmain(Stringargs[])throwslOException{

System.out.printing输入所求斐波那契数列的项数:

”);bytebuf[]=newbyte[20];

System.in.read(buf);

Stringtl=newString(buf);

intn=Intcgcr.parsclnt(tl.trim());

Fbfl=newFb();

intb;

System.out.prinlln(”输出包含”+n+”项的斐波那契数列:

,fbr(inti=0;i<=n;i++){

b=fl.Ri);

Syslem.out.print(b+"*');

}

System.out.println();

3.编写基于Java语言的选择排序算法。

*功能:

该算法用选择排序对给定的数组排序

*输入:

一个乱序的整数数组a[]

*输出:

升序排列的整数数组a[]

publicvoidselectionSort(inta[])

{

inttemp,min;

fbr(inti=0;i

{

min=i;

fbr(intj=i+1;ja[j])min=j;

temp=a[i];

a[i]=a[min];a[min]=temp;

}

}

4.编写基于Java语言的冒泡排序算法。

*功能:

该算法用冒泡排序对给定的数组排序

*输入:

一个乱序的整数数组a[]

*输出:

升序排列的整数数组a[]

***/

publicvoidbubblcSort(inta[])

{

inttemp;

ibr(inti=O;i

fbr(intj=O;j

iRa[j]>a[j+l])

{

temp=a[j+l];

a[j+l]=a[j];

a[j]=temp;

}

}

5.编写基于Java语言的顺序查找算法。

/***

*功能:

该算法实现顺序查找功能

*输入:

一个整数数组a□和一个要查找的键值k

*输出:

如果在数组中找到k,则返回对应数组兀素的卜•标;如果在数组中找不到k,则返P1-1***/

publicintseqSearch(inta[],intk)

{

inti=0;

while((i

=k))

i=i+1;

if(i

returni;

else

return-1;

}

6.编写基于Java语言的折半查找算法。

*功能:

该算法实现折半查找功能

*输入:

一个己经按照升序排列好的整数数组a[]和一个要查找的键值k

*输出:

如果在数组中找到k,则返回对应数组元素的下标;如果在数组中找不到k,则返』-1

publicintbinarySearch(inta[],intk)

intlow=0;

intupper=a.length-1;

whilc(low<=upper)

{

intmid=(low+upper)/2;

iRk=a[mid])

returnmid;

else

iRdes

upper=mid-1;

else

low=mid+1;

}

return-1;

}

7.编写基于Java语言的字符串匹配算法。

*功能:

该算法实现字符串匹配功能

*输入:

一个n个字符的字符串str代表一段文本

一个m个字符的字符串key代表一个模式

*输出:

如果查找成功的话,返回文本的第一个匹配字符串中第一个字符的位置,否则返回-1

***,'■

publicintstringMatch(Stringstr,Stringkey)

{

intj;

intn=str.lcngth();

intm=key.length();

fbr(inti=0;i<=(n-m);i++)

{

j=0;

while((jvm)&&(key.charAt(j)==str.charAt(i+j)))

{

j=j+l;

System.out.println(i+”尸+j);

iRj=m)

returni;

return-1;

}

8.编写基于Java语言的直接插入排序算法。

*功能:

该算法用宜接插入排序对给定的数组排序

*输入:

一个乱序的整数数组a[]

*输出:

升序排列的整数数组a[]

publicvoidinsertSort(inta[])

{

inttempjj;

fbr(i=1;i

{

temp=a[i];

j=i-l;

while(j>=0&&a[j]>=temp)

{

a|j+l]=a[j];

j";

a[j+l]=temp;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1