第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx

上传人:b****8 文档编号:28278223 上传时间:2023-07-10 格式:DOCX 页数:34 大小:249.35KB
下载 相关 举报
第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx_第1页
第1页 / 共34页
第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx_第2页
第2页 / 共34页
第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx_第3页
第3页 / 共34页
第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx_第4页
第4页 / 共34页
第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx

《第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx》由会员分享,可在线阅读,更多相关《第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx(34页珍藏版)》请在冰豆网上搜索。

第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报.docx

第8章怎样地地研究算法排序算法示例练习地的题目详解解析汇报汇报

第8章怎样研究算法:

排序算法示例

1、排序算法是最基本的算法,很多复杂算法都是以排序为基础进行构造的。

关于排序算法,下列说法不正确的是_____。

(A)大规模数据集合中查找有无某些元素的问题,有序数据集合比无序数据集合的查找要快得多;

(B)大规模数据集合中按元素分组进行计算的问题,有序数据集合比无序数据集合的计算要快得多;

(C)对无序数据集合,两个算法X和Y:

X采用无序数据处理,Y采用先将无序数据排序成有序数据,然后进行处理;则对前述(A)、(B)两类问题,Y算法一定比X算法慢;

(D)上述说法有不正确的;

 

答案:

C

解释:

本题考核排序算法的研究

在大规模数据集合中查找,有序数据集合有利算法进行和判断,要比无序数据集合查找的快,对于(C)选项,Y算法尽管需要排序后再处理,但排序处理后的数据查找更加快捷,因此可能Y算法比X算法更快。

具体内容请参考排序算法以及第八章课件。

2、下列三个算法是关于“大规模数据集合中查找有无某些元素”问题的算法:

针对一个“学生”数据表,如下示意,找出“成绩”为某一分数的所有学生。

学生

学号

姓名

成绩

120300107

闫宁

95

120300103

李宁

94

120300101

李鹏

88

120300106

徐月

85

120300102

王刚

79

120300109

江海

77

120300110

周峰

73

120300104

赵凯

69

120300105

张伟

66

120300108

杜岩

44

【算法A1】

StartofalgorithmA1

Step1.从数据表的第1条记录开始,直到其最后一条记录为止,读取每一条记录,做Step2。

Step2.对每一条记录,判断成绩是否等于给定的分数:

如果是,则输出;如果不是,则不输出。

EndofalgorithmA1

【算法A2】

StartofalgorithmA2

Step1.从数据表的第1条记录开始,直到其最后一条记录为止,读取每一条记录,做Step2和Step3。

Step2.对每一条记录,判断成绩是否等于给定的分数:

如果等于,则输出;如果不等于,则不输出。

Step3.判断该条记录的成绩是否小于给定的分数:

如果不是,则继续;否则,退出循环,算法结束。

EndofalgorithmA2

【算法A3】

StartofalgorithmA3

Step1.假设数据表的最大记录数是n,待查询区间的起始记录位置Start为1,终止记录位置Finish为n;

Step2.计算中间记录位置I=(Start+Finish)/2,读取第I条记录。

Step3.判断第I条记录的成绩与给定查找分数:

(3.1)如果是小于关系,则调整Finish=I-1;如果Start>Finish则结束,否则继续做Step2;(3.2)如果是大于关系,则调整Start=I+1;如果Start>Finish则结束,否则继续做Step2;

(3.3)如果是等于关系,则输出,继续读取I周围所有的成绩与给定查找条件相等的记录并输出,直到所有相等记录查询输出完毕则算法结束。

EndofalgorithmA3

针对上述三个算法,回答下列问题:

(1)关于算法A1,A2,A3的快慢问题,下列说法正确的是_____。

(A)算法A1快于算法A2,算法A2快于算法A3;

(B)算法A2快于算法A1,算法A2快于算法A3;

(C)算法A3快于算法A2,算法A2快于算法A1;

(D)算法A1快于算法A3,算法A3快于算法A2;

(E)上述都不正确。

 

答案:

C

解释:

本题考核排序算法的研究

首先,数据是有序排列的,从大到小。

算法A1依次搜索,穷举。

算法A2与A1一样,穷举,不同的是它利用数据是从大到小排序的特点,因此,如果当前数据比如果小于目标数,那么说明只有的也一定小于,则目标不在序列中。

因此,A2比A1快。

算法A3利用数据有序特点,采用二分查找,每次将目标数与中间值比较,缩小搜索范围,因此A3比A2快。

综上,答案选(C)。

具体内容请参考排序算法以及第八章课件。

(2)关于算法A3,下列说法正确的是_____。

(A)对数据表中的任何数据,算法A3都适用;

(B)对数据表中任何已排序的数据,算法A3都适用;

(C)对已按成绩排序的数据表,算法A3都适用;

(D)对已按成绩进行降序排列的数据表,算法A3都适用;

(E)上述都不正确。

 

答案:

D

解释:

本题考核排序算法的研究

算法A3需求的数据应该是排序的,而且是对成绩排序的,因此排除(A)(B)。

其次,按照算法A3,应该是降序排序的数据才可用,因为升降序决定了算法二分查找的重订搜索范围实在中间值的左边还是右边,对于算法A3,要求是降序的。

因此选择(D)。

具体内容请参考排序算法以及第八章课件。

(3)关于算法A3和算法A1,下列说法正确的是_____。

(A)如果数据表中记录数越多,则算法A3相比算法A1的优势越明显,即查找时间越短;

(B)如果数据表中记录数越多,则算法A1相比算法A3的优势越明显;即查找时间越短;

(C)算法A3和算法A1的执行时间差异不会随数据表中记录数多少而变化;

(D)上述都不正确。

 

答案:

A

解释:

本题考核排序算法的研究

数据越多,算法A1穷举,查找时间正比增加,算法A3二分查找,每次可缩小一半的查找范围,数据越多,优势越明显,算法A1时间复杂度是O(n),算法A3时间复杂度是O(log2n),因此选择(A)。

具体内容请参考排序算法以及第八章课件。

(4)关于三个算法的复杂性,下列说法正确的是_____。

(A)算法A1、A2和A3的时间复杂性都为O(n);

(B)算法A1和A2的时间复杂性为O

(1),算法A3的时间复杂性为O(n);

(C)算法A1的时间复杂性为O(n),算法A2的时间复杂性为O(n/2),算法A3的时间复杂性为O(n/4);

(D)算法A1和A2的时间复杂性为O(n),算法A3的时间复杂性为O(log2n);

(E)上述都不正确。

 

答案:

D

解释:

本题考核排序算法的研究

数据越多,算法A1穷举,线性查找,平均比较次数(n+1)/2,时间复杂度O(n)。

算法A2同样是线性查找,只是多了对剩余数据的判断,时间复杂度和A1一样,同样是O(n)。

算法A3二分查找,每次可缩小一半的查找范围,算法A3时间复杂度是O(log2n),因此选择(D)。

具体内容请参考排序算法以及第八章课件。

(5)针对按成绩降序排列的数据表,假设记录数为n,关于算法A2,下列说法正确的是_____。

(A)算法A2在任何情况下都需要读取n条记录,才能得到结果;

(B)算法A2在任何情况下都需要读取n/2条记录,才能得到结果;

(C)算法A2在最好的情况下是读取1条记录,在最差的情况是读取n条记录,才能得到结果;

(D)算法A2在任何数据分布情况下,平均要读取n/2条记录才能得到结果;

(E)上述都不正确。

 

答案:

C

解释:

本题考核排序算法的研究

对于算法A2,最好情况:

读取1条记录,刚好等于目标数,算法结束;或者读取1条记录,该记录小于目标数,因成绩降序排列,剩余数据都小于目标,所以记录中没有目标查询数,算法结束。

最坏情况:

读取了n条记录,最后一条记录等于,则返回结果,不等于,则不在记录中。

算法结束。

综上,选择(C)。

具体内容请参考排序算法以及第八章课件。

3、关于“非结构化数据(文档)的查找与搜索”问题,参考下图,回答下列问题。

注意每份文档可能包含数千数万的词汇。

(1)若要在n个全文文档中(n可能很大)查找有无某个关键词的文档,为提高检索效率,最好的做法是_____。

(A)直接用给定关键词来匹配每一份文档中的每一个词汇。

若该文档存在匹配成功的词汇,则输出该文档;否则,不输出该文档。

(B)对这n个文档,首先建立一个“关键词”索引表,该索引表记录着“关键词”及包含该关键词的“文档编号”。

在此基础上,用给定关键词来匹配索引表中的关键词。

如果匹配成功,则输出索引表中相对应的文档编号;否则,则输出信息“没有含该关键词的文档”。

(C)对这n个文档,首先建立一个“关键词”索引表,该索引表记录着“关键词”及包含该关键词的“文档编号”,并按关键词进行字母序的排序。

在此基础上,用给定关键词来匹配索引表中的关键词。

如果匹配成功,则输出索引表中相对应的文档编号,否则,则输出信息“没有含该关键词的文档”。

(D)选项(B)(C)比选项(A)的做法好,但选项(B)(C)没有效率上的差别。

 

答案:

C

解释:

本题考核排序算法的研究

由题意知,n个全文文档数据量很大,若全文搜索,检索效率会很低,因此排除(A)。

建立“关键字”索引表,并包含“文档编号”,可以有效的缩小查找范围。

同时,对索引表进行排序,可以有效的提高查找效率。

因此,选择(C)。

具体内容请参考查找,排序算法以及第八章课件。

(2)若要在n个全文文档中(n可能很大)查找与某个关键词最相关的文档,为提高检索效果和检索效率,最好的做法是_____。

(A)对这n个文档,首先建立一个“关键词”索引表,该索引表记录着“关键词”及包含该关键词的“文档编号”,并按关键词进行字母序的排序。

在此基础上,用给定关键词来匹配索引表中的关键词。

如果匹配成功,则输出索引表中相对应的文档编号,否则,则输出信息“没有含该关键词的文档”。

(B)对这n个文档,首先建立一个“关键词”索引表,该索引表记录着“关键词”,包含该关键词的“文档编号”,以及该关键词在该文档中出现的“次数”,并按关键词进行字母序的排序。

在此基础上,用给定关键词来匹配索引表中的关键词。

如果匹配成功,则进一步寻找同一关键词“次数”最多的m个索引项,输出相对应的文档编号;否则,则输出信息“没有含该关键词的文档”。

(C)对这n个文档,首先建立一个“关键词”索引表,该索引表记录着“关键词”,包含该关键词的“文档编号”,以及该关键词在该文档中出现的“次数”;对索引表,按关键词进行字母序的排序;如果关键词相同,则进一步按“次数”对同一关键词的若干文档进行降序排序。

在此基础上,用给定关键词来匹配索引表中的关键词。

如果匹配成功,则进一步寻找同一关键词“次数”最多的m个索引项,输出相对应的文档编号;否则,则输出信息“没有含该关键词的文档”。

(D)选项(B)(C)比选项(A)的做法好,但选项(B)(C)在执行效果和执行效率方面没有什么差别。

 

答案:

C

解释:

本题考核排序算法的研究

由题意知,要寻找与关键词最相关的文档,做法是以关键词出现次数为评判标准。

建立索引表,包含“关键词”,因要查找与关键词最相关的文档,所以需求相关文档中出现的“次数”,故而排除(A)选项,对于(B)(C),(C)选项中对关键词相同的文档进一步按“次数”进行降序排序,可以提高检索效率,因此选择(C)选项。

具体内容请参考查找,排序算法以及第八章课件。

(3)针对下列问题求解方法:

对n个文档,首先建立一个“关键词”索引表,该索引表记录着“关键词”,包含该关键词的“文档编号”,以及该关键词在该文档中出现的“次数”;对索引表,按关键词进行字母序的排序;如果关键词相同,则进一步按“次数”对同一关键词的若干文档进行降序排序。

在此基础上,用给定关键词来匹配索引表中的关键词。

如果匹配成功,则进一步寻找次数最多的m个索引项,输出相对应的文档编号;否则,则输出信息“没有含该关键词的文档”。

问该方法涉及到几类算法,说法正确的是_____。

(A)涉及字符串的字母序排序算法;

(B)涉及数值属性排序算法;

(C)涉及字符串匹配算法;

(D)涉及数值属性查找算法;

(E)涉及上述全部算法;

 

答案:

E

解释:

本题考核排序算法的研究

查找关键词,设计字符串匹配算法。

对索引表按关键字进行字母序的排序,设计字符串的字母序排序算法。

关键词相同,则进一步按“次数”对同一关键词的若干文档进行降序排序,涉及数值属性排序算法。

寻找次数最多的m个索引项,涉及数值属性查找算法。

综上,选择(E)。

具体内容请参考查找算法以及第八章课件。

(4)上图给出了一种“自动获取文档关键词”的方法,关于该方法的表述,最好的是_____。

(A)文档中出现次数最多的词汇必定是关键词;

(B)文档中去掉标点符号后,出现次数最多的词汇必定是关键词;

(C)文档中去掉标点符号和一些辅助词汇,出现次数最多的词汇必定是关键词;

(D)文档中去掉标点符号和一些辅助词汇,出现次数最多且次数达到一定数值的词汇必定是关键词;

(E)上述说法都不正确;

 

答案:

D

解释:

本题考核排序算法的研究

“自动获取文档关键词”的方法是一个充分不必要条件。

关键词应排除标点符号和辅助词汇,因此排除(A)(B)。

出现次数最多,但不能对单个文档而言就凭次数判断关键词,必须达到一定的标准,故而选择(D)。

具体内容请参考排序算法以及第八章课件。

4、关于“内排序”算法和“外排序”算法,下列说法不正确的是_____。

(A)“内排序”算法通常是内存中数据排序常用的算法,而“外排序”算法通常是大规模数据排序常用的算法;

(B)“内排序”算法由于内存排序应用的频繁性,所以算法要考虑用尽可能少的步骤,而“外排序”算法由于要利用磁盘保存中间结果,所以算法主要考虑尽可能少的读写磁盘;

(C)无论是“内排序”算法,还是“外排序”算法,都需要考虑读写磁盘的代价问题;

(D)对一组需要排序的数据,能应用“内排序”算法时,尽量不用“外排序”算法;

 

答案:

C

解释:

本题考核排序算法的研究

内排序:

待排序的数据可一次性地装入内存中,即排序者可以完整地看到和操纵所有数据;

外排序:

待排序的数据保存在磁盘上,不能一次性装入内存,即排序者不能一次完整地看到和操纵所有数据,需要将数据分批装入内存分批处理;

由上可知(A)(B)正确,(C)错误。

具体内容请参考排序算法以及第八章课件。

5、下列三种算法是经常应用的内排序算法:

插入排序、选择排序和冒泡排序。

阅读下列算法,回答下列问题。

INSERTION-SORT(A)

1.fori=2toN

2.{key=A[i];

3.j=i-1;

4.While(j>0andA[j]>key)do

5.{A[j+1]=A[j];

6.j=j-1;}

7.A[j+1]=key;

8.}

SELECTION-SORT(A)

1.fori=1toN-1

2.{k=i;

3.forj=i+1toN

4.{ifA[j]

5.ifk<>ithen

6.{

7.temp=A[k];

8.A[k]=A[i];

9.A[i]=temp;

10.}

11.}

BUBBLE-SORT(A)

1.fori=1toN-1

2.{haschange=false;

3.forj=1toN-i

4.{ifA[j]>A[j+1]then

5.{temp=A[j];

6.A[j]=A[j+1];

7.A[j+1]=temp;

8.haschange=true;

9.}

10.}

11.if(haschange==false)thenbreak;

12.}

(1)关于INSERTION-SORT算法的基本思想,下列说法正确的是_____。

(A)一个元素一个元素的处理。

每次处理一个元素,通过与当前已排序元素的比较,将该元素放入到当前正确排序的位置。

直到最后一个元素则算法结束。

(B)一个轮次一个轮次的处理。

将元素集合分成两个部分,已排序元素集合和未排序元素集合,开始时已排序元素集合为空。

在每一轮次,从未排序元素集合中找出最小值的元素,将其移入已排序元素集合;直到未排序元素集合为空时则算法结束。

(C)一个轮次一个轮次的处理。

在每一轮次中依次对待排序数组元素中相邻的两个元素进行比较:

如不符合排序关系,则交换两个元素。

直到某一轮次没有元素交换发生则结束。

(D)上述说法都不正确。

 

答案:

A

解释:

本题考核排序算法的研究

(A)描述的是插入排序,(B)描述的是选择排序,(C)描述的是冒泡排序。

具体内容请参考内排序算法以及第八章课件。

(2)关于SELECTION-SORT算法的基本思想,下列说法正确的是_____。

(A)一个元素一个元素的处理。

每次处理一个元素,通过与当前已排序元素的比较,将该元素放入到当前正确排序的位置。

直到最后一个元素则算法结束。

(B)一个轮次一个轮次的处理。

将元素集合分成两个部分,已排序元素集合和未排序元素集合,开始时已排序元素集合为空。

在每一轮次,从未排序元素集合中找出最小值的元素,将其移入已排序元素集合;直到未排序元素集合为空时则算法结束。

(C)一个轮次一个轮次的处理。

在每一轮次中依次对待排序数组元素中相邻的两个元素进行比较:

如不符合排序关系,则交换两个元素。

直到某一轮次没有元素交换发生则结束。

(D)上述说法都不正确。

 

答案:

B

解释:

本题考核排序算法的研究

(A)描述的是插入排序,(B)描述的是选择排序,(C)描述的是冒泡排序。

具体内容请参考内排序算法以及第八章课件。

(3)关于BUBBLE-SORT算法的基本思想,下列说法正确的是_____。

(A)一个元素一个元素的处理。

每次处理一个元素,通过与当前已排序元素的比较,将该元素放入到当前正确排序的位置。

直到最后一个元素则算法结束。

(B)一个轮次一个轮次的处理。

将元素集合分成两个部分,已排序元素集合和未排序元素集合,开始时已排序元素集合为空。

在每一轮次,从未排序元素集合中找出最小值的元素,将其移入已排序元素集合;直到未排序元素集合为空时则算法结束。

(C)一个轮次一个轮次的处理。

在每一轮次中依次对待排序数组元素中相邻的两个元素进行比较:

如不符合排序关系,则交换两个元素。

直到某一轮次没有元素交换发生则结束。

(D)上述说法都不正确。

 

答案:

C

解释:

本题考核排序算法的研究

(A)描述的是插入排序,(B)描述的是选择排序,(C)描述的是冒泡排序。

具体内容请参考内排序算法以及第八章课件。

(4)关于排序的选择法和冒泡法,下列说法不正确的是_____。

(A)“选择法”和“冒泡法”都是每一轮次找出一个最小值元素,只是寻找最小值元素的方法不一样,在效率方面没有什么差别;

(B)“选择法”通过将所有未排序元素与当前轮次待寻找的最小值元素进行比较,获得当前轮次的最小值元素;而“冒泡法”通过相邻元素的两两比较,一个轮次完成也能获得一个最小值元素;

(C)虽然“选择法”和“冒泡法”都是每一轮次找出一个最小值元素,但选择法每轮次仅比较,没有交换,直至找到最小值后做一次交换;而冒泡法每一轮次是通过相邻元素比较来找最小值,如果不满足排序,则交换相邻两个元素,交换可能频繁发生。

这样来看,选择法比冒泡法要快一些;

(D)上述说法有不正确的。

 

答案:

A

解释:

本题考核排序算法的研究

“选择”与“冒泡”都是每轮查找出最小值,方法不同(B)选项是正确的,但效率是有不同的,(C)中描述正确,选择排序调用swap要比冒泡排序少,因此,选择(A)

具体内容请参考内排序算法以及第八章课件。

(5)关于三种排序算法,下列说法正确的是_____。

(A)三种算法的时间复杂度都为O(n2),所以三种算法的执行效率是一样的;

(B)尽管三种算法的时间复杂度都为O(n2),但细致比较还是有差别的,例如冒泡法排序比选择法排序要快一些;

(C)尽管细致比较三种算法的执行时间是有差别的,但这种差别对内排序问题而言是可以忽略不计的;

(D)尽管细致比较三种算法的执行时间是有差别的,这种差别对内排序问题而言是重要的,因为内排序算法可能要被频繁的执行。

 

答案:

D

解释:

本题考核排序算法的研究

三种算法的时间复杂度都是O(n2),但是细致比较是有差别的,(A)错误,如果被排序的记录很大,执行交换所需时间是客观的,将远远大于比较关键字和计算数组下标的时间。

冒泡和插入排序调用次数最多,为n(n-1)/2,选择排序每遍只在选出最小记录后进行一次交换,需调用n-1次,因此(B)错误,有因为内排序算法要被频繁执行,因此这种差别对内排序问题而言是重要的,故而选择(D)。

具体内容请参考内排序算法以及第八章课件。

(6)阅读INSERTION-SORT算法,关于第4.行至第6.行间程序段的作用,下列说法正确的是_____。

(A)将当前待处理元素,依次与已经排序的第j个元素进行比较,j采取递减方式循环,以找到当前元素所应在的位置,并将该位置以前的元素依次向后移动一个位置;

(B)将当前待处理元素,依次与已经排序的第j个元素进行比较,j采取递增方式循环,以找到当前元素所应在的位置,并将该位置以前的元素依次向后移动一个位置。

(C)将当前待处理元素,依次与已经排序的第j个元素进行比较,j采取递增方式循环,以找到当前元素所应在的位置,并将该位置以后的元素依次向前移动一个位置。

(D)将当前待处理元素,依次与已经排序的第j个元素进行比较,j采取递减方式循环,以找到当前元素所应在的位置,并将该位置以后的元素依次向后移动一个位置。

 

答案:

D

解释:

本题考核排序算法的研究

插入排序,算法中J从I-1到1,递减,排除(B)(C),将大于key的元素依次向后移动,因而选择(D)。

具体内容请参考内排序算法以及第八章课件。

(7)阅读SELECTION-SORT算法,关于第3.行至第4.行间程序段的作用,下列说法正确的是_____。

(A)循环地在未排序元素集合中找最小值元素的位置,该位置保存在变量k中;

(B)循环地在未排序元素集合中找最小值元素,该元素保存在变量k中;

(C)循环地在未排序元素集合中找最大值元素的位置,该位置保存在变量k中;

(D)循环地在未排序元素集合中找最大值元素,该元素保存在变量k中;

 

答案:

A

解释:

本题考核排序算法的研究

选择排序,算法中k记录的是最小元素的位置,交换条件:

A[j]

具体内容请参考内排序算法以及第八章课件。

(8)阅读BUBBLE-SORT算法,已知N=20,下列说法正确的是_____。

(A)第5轮次,是将第1个元素至第15个元素之间的元素,相邻者进行比较;

(B)第4轮次,是将第1个元素至第20个元素之间的元素,相邻者进行比较;

(C)第8轮次,是将第20个元素至第12个元素之间的元素,相邻者进行比较;

(D)第11轮次,是将第20个元素至第1个元素之间的元素,相邻者进行比较;

 

答案:

A

解释:

本题考核排序算法的研究

冒泡排序,每遍找出最小元素,方法是依次将相邻元素两两比较,逐渐分成两个部分:

已排和未排,N=20,第5次时,16至20号元素已排序完成,需要将是将第1个元素至第15个元素之间的元素,相邻者

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

当前位置:首页 > 农林牧渔 > 林学

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

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