如果只想得到一个序列中第k个最小元素之前的部分排序序列,最好采用什么排序方法?为什么?对于序列{57,40,38,11,

题目
问答题
如果只想得到一个序列中第k个最小元素之前的部分排序序列,最好采用什么排序方法?为什么?对于序列{57,40,38,11,13,34,48,75,25,6,19,9,7},得到其第4个最小元素之前的部分序列{6,7,9,11},使用所选择的排序算法时,要执行多少次比较?
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

● 对于具有n 个元素的一个数据序列,若只得到其中第 k 个元素之前的部分排序, 最好采用(59) ,使用分治 (Divide and Conquer )策略的是(60) 算法。

(59)A. 希尔排序 B. 直接插入排序 C. 快速排序 D. 堆排序

(60)A. 冒泡排序 B. 插入排序 C. 快速排序 D. 堆排序


正确答案:D,C




 

第2题:

已知某序列为{49,38,65,97,76,13,27},试采用该序列的第1个元素为枢轴进行快速排序,则经过一趟快速排序之后所得到的序列为:【 】。


正确答案:2713 384965 9776
2713 384965 9776 解析:快速排序的的思想是:从线性表中选取一元素,如本题中的49,将线性表后面小于46的元素移到前边,而前面大于49的元素移到后边。本题中46是第一个元素,因此只需将线性表后面小于49的元素移到前边。

第3题:

从未排序的序列中依次取出一个元素与已排序序列中的元素进行比较,然后将其放在已排序序列的合适位置上,该排序方法称为插入排序。()

此题为判断题(对,错)。


参考答案:√

第4题:

一个序列中有若干个元素,若只想得到其中第i个元素之前的部分排序,最好采用( )方法。 A.快排序 B.堆排序 C.插入排序 D.shell排序


正确答案:B
堆排序:n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):   (1) ki≤K2i且ki≤K2i+1 或(2)KiK2i且kiK2i+1(1≤i≤ n) //ki相当于二叉树的非叶结点,K2i则是左孩子,k2i+1是右孩子

第5题:

如果只想得到一个关键字序列中第k个最小元素之前的排序序列,最好采用(53)排序方法。如果有这样的一个序列(57,40,38,11,13,34,48,75,25,6,19,9,7),得到第4个最小元素之前的部分序列(6,7,9,11),使用所选择的算法实现时,要执行(54)次比较。

A.堆排序

B.快速

C.归算

D.基数排序


正确答案:A

第6题:

对于具有n个元素的一个数据序列,若只需得到其中第k个元素之前的部分排序,最好采用(59),使用分治(Divide and Conquer)策略的是(60)算法。

A.希尔排序

B.直接插入排序

C.快速排序

D.堆排序


正确答案:D
解析:本题考查排序算法及特点。对于希尔排序、直接插入排序,只有在排序过程后才能确保全部序列以及前k个元素的最终排列,快速排序采用分治算法,常用递归算法实现,该算法根据枢轴元素进行划分,第一趟划分结束后得到了两个子序列,一个序列中的元素均不大于另一个子序列中的元素,枢轴元素介于这两个子序列之间。若仅需得到最终序列的前k个元素,每次得到枢轴元素位置后再考虑下一步的排序过程,在算法的流程控制上比较复杂。对于只需得到最终序列的前k个元素,堆排序比较简单。

第7题:

如果只想得到5000个元素组成的序列中最小的20个元素序列,用______方法最合适。

A.简单选择排序

B.Shell排序

C.堆排序

D.冒泡排序


正确答案:C
解析:冒泡排序与简单选择排序均需要进行20趟排序,才能找到题目所求的序列;Shell排序只有将这5000个元素全部排序完成,才能找到题目所求的序列,因此排除Shell排序;堆排序需要先建立初始堆后,再经过20次堆调整才能得到。冒泡排序、简单选择排序和堆排序这三种排序方法中堆排序的时间复杂度最小,所以选堆排序最合适。

第8题:

●如果只想得到一个关键字序列中第k个最小元素之前的排序序列,最好采用 (53) 排序方法。如果有这样的一个序列(57,40,38,11,13,34,48,75,25,6,19,9,7),得到第4个最小元素之前的部分序列(6,7,9,11),使用所选择的算法实现时,要执行 (54) 次比较。

(53) A.堆排序

B.快速

C.归算

D.基数排序

(54) A.13

B.34

C.269

D.以上都不对


正确答案:A,B
【解析】采用堆排序最合适。依题意可知,只需取得第k个最小元素之前的排序序列,堆排序的时间复杂度为O(n+k×log2n),若k≤n/log2n,则时间复杂度为O(n)。对于序列:(57,40,38,11,13,34 48,75,25,6,19,9,7),得到第4个最小元素之前的部分序列(6,7,9,11),使用所选择的算法实现时,其执行比较次数如下:
建堆     20次比较   得到6
调整     5次比较    得到7
调整     4次比较    得到9
调整     5次比较    得到11
总的比较次数为34次。

第9题:

从未排序的序列中依次取出一个元素与已排序序列中的元素进行比较,然后将其放在已排序序列的合适位置上,该排序方法称为 ______。

A.插入排序

B.选择排序

C.希尔排序

D.归并排序

A.

B.

C.

D.


正确答案:A
解析:插入排序是将一个记录插入到已排好序的有序表中,选择排序是指通过n-1次关键字间的比较,从n-i+1个记录中选出关键字最小的记录并与第i个记录交换,希尔排序是先将整个记录分成若干个子序列分别排序,然后堆全体记录进行排序,归并排序是指将两个或两个以上的有序表组合成一个新的有序表。

第10题:

每趟排序都从序列的未排好序的序列中挑选一个值最小(或最大)的元素,然后将其与未排好序的序列的第一个元素交换位置。此种排序法称为(54)。

A.插入排序法

B.选择排序法

C.希尔排序法

D.快速排序法


正确答案:B
解析:选择排序方法是每一趟排序从未排序的子序列中依次取出元素与已经排好序的序列中的元素进行比较,然后将其与未排好序的序列的第一个元素交换位置。因此选B。

更多相关问题