简答题

如果只想得到一个序列中第k个最小元素之前的部分排序序列,最好采用什么排序方法?为什么?对于序列{57,40,38,11,13,34,48,75,25,6,19,9,7},得到其第4个最小元素之前的部分序列{6,7,9,11},使用所选择的排序算法时,要执行多少次比较?

正确答案

采用堆排序最合适,依题意可知只需取得第k个最小元素之前的排序序列时,堆排序的时间复杂度Ο(n+klog2n),若k≤nlog2n,则得到的时间复杂性是Ο(n)。
对于上述序列得到其前4个最小元素,使用堆排序实现时,执行的比较次数如下:初始建堆:比较20次,得到6;
第一次调整:比较5次,得到7;
第二次调整:比较4次,得到9;
第三次调整:比较5次,得到11。

答案解析

相似试题
  • 一个序列中有10000个元素,若只想得到其中前10个最小元素,则最好采用()方法。

    单选题查看答案

  • 设输入序列是1、2、3、……、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是()。

    单选题查看答案

  • 给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,请设计一个最坏时间复杂度为O(n)的算法,并对其时间复杂度进行分析说明。

    简答题查看答案

  • 考虑在序列A[1..n]中找最大最小元素的问题。一个分治算法描述如下:如果n≤2就直接求解。否则,将序列等分成两个子序列A[1..n/2]和A[n/2+1..n],分别找出这两子序列的最大最小元素x1,y1和x2,y2;然后据此求出A[1..n]的最大元素x=max{x1,x2}及最小元素y=min{y1,y2}。请给出该算法计算时间T(n)满足的递归方程,并解方程来确定算法的时间复杂度。假定n=2k(k为正整数)。

    简答题查看答案

  • 有15个整数按由大到小顺序放在一个数组中,输入一个整数,要求用二分查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印″找不到″。

    简答题查看答案

  • 在寻找n个元素中第k小元素问题中,如快速排序算法思想,运用分治算法对n个元素进行划分,如何选择划分基准?下面()答案解释最合理。

    单选题查看答案

  • 在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k

    单选题查看答案

  • 在寻找n个元素中第k小元素问题中,若使用快速排序算法思想,运用分治算法对n个元素进行划分,应如何选择划分基准?下面()答案解释最合理。

    单选题查看答案

  • 在寻找n个元素中第k小元素问题中,如使用快速排序算法思想,运用分治算法对n个元素进行划分,应如何选择划分基准?下面()答案解释最合理。

    单选题查看答案