2.26排序专项测试补题
Posted l999q
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.26排序专项测试补题相关的知识,希望对你有一定的参考价值。
输入若已经是排好序的,下列排序算法最快的是()
A. 插入排序
B. Shell排序
C. 合并排序
D. 快速排序解析:若已排好序,使用插入排序的时候只要两两比较一次即可,复杂度为O(n)。
答案:A拓扑排序是按 AOE 网中每个结点事件的最早发生时间对结点进行排序,这样的说法正确吗?
A. 正确
B. 不正确解析:AOE网是一个有向无环图,求其拓扑排序有两种方法:1,对图进行深度优先搜索后,按节点完成时间逆序排成一列即得到拓扑排序,寻找入度为0的节点,输出,并删除从该节点出发的所有边重复还过程,即得到图的拓扑排序。 需注意:图的拓扑排序并不唯一。
答案:B若外部存储上有3110400个记录,做6路平衡归并排序,计算机内存工作区能容纳400个记录,则排序好所有记录,需要作几趟归并排序( )
A. 6
B. 3
C. 5
D. 4解析:log(6,3110400/400) = 5 设归并趟数为s次,对n个记录进行排序,有m个归并段,要进行k路归并排序,则归并趟数s=log(k,m);
答案:C交换排序法是对序列中的元素进行一系列比较,当被比较的两个元素逆序时,进行交换,起泡排序和快速排序是基于这类方法的两种排序方法,起泡排序算法的最坏时间复杂性是O(n*n),而快速排序算法的最坏时间复杂性是O(nlog2 n);所以快速排序比起泡排序效率更高(×)
所有内部排序方法都是基于关键字比较的排序方法。( × )
某地电信局要对业务号码进行梳理,需要检测开通的市话号码是否存在某一个是另一个的前缀的情况,以简化电话交换机的逻辑。例如:某用户号码是“11001100”,但与"110"报警电话产生前缀配对。已知市话号码最长8位,最短3位,并且所有3位的电话号码都以1开头。由于市话号码众多,长度也未必一直,高效的算法可以用O(n)的时间复杂度完成检测(n为开通市话号码个数,数量是千万级的)。那么,该算法最坏情况下需要耗费大约________内存空间。
A. 5GB
B. 500MB
C. 50MB
D. 5MB解析:最长 8 位, 最短 3 共6种情况:
三位都是 1 开头 ,因此有 10^2=100 种
四位: 10^4=10,000 种
五位: 10^5=100,000 种
六位: 10^6=1,000,000 种
七位: 10^7=10,000,000 种
八位: 10^8=100,000,000种
相加一共为111,110,100种,因为电话号码唯一,所有号码最后1位不用判断,总数除以10 = 11,111,010种
一位号码 4bit(号码 从 0-9 ,所以至少用 4 个 bit 位才能表示 ),8位的号码占 32bit 即 4字节/byte(其实可以只存前7位,3.5byte)
最后:11,111,010 * 4 / 1024 / 1024 = 42.4 Mb
答案:C在以下排序算法中,关键字比较的次数与记录的初始排列次序无关的是()。
A. 希尔排序
B. 冒泡排序
C. 插入排序
D. 直接选择排序解析:选择排序每次都需要遍历剩下的序列 找出最大或最小值进行与当前位置的交换 无论什么情况下时间复杂度都为O(N2)
答案:D拓扑排序运算只能用于( 有向无环图 )
在外部排序时,利用选择树方法在能容纳m个记录的内存缓冲区中产生的初始归并段的平均长度为2m个记录
待排序元素规模较小时,宜选取哪种排序算法效率最高( )
A. 堆排序
B. 归并排序
C. 冒泡排序
D. 希尔排序解析:递归时间可能长于比较时间
答案:C- 适合并行处理的排序算法是()
A. 选择排序
B. 快速排序
C. 希尔排序
D. 基数排序
解析:基数排序:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次
排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。可以同时操作多个元素,从而实现了并行处理。
答案:D
以上是关于2.26排序专项测试补题的主要内容,如果未能解决你的问题,请参考以下文章