设有10000个待排序的记录关键字,如果需要用最快的方法选出其中

题目

设有10000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列()方法可以达到此目的。

  • A、快速排序
  • B、堆排序
  • C、归并排序
  • D、插入排序
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用()排序法。

A、冒泡排序

B、快速排序

C、堆排序

D、基数排序


答案:C

第2题:

某内排序方法的稳定性是指()。

A、该排序算法不允许有相同的关键字记录

B、该排序算法允许有相同的关键字记录

C、平均时间为0(nlogn)的排序方法

D、以上都不对


参考答案:D

第3题:

有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键字比该记录的关键字小。假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。

① 给出适用于计数排序的顺序表定义;

② 编写实现计数排序的算法;

③ 对于有n个记录的表,关键字比较次数是多少?

④ 与简单选择排序相比较,这种方法是否更好?为什么?


参考答案:
  [算法描述]
  ① typedef struct
  {int key;
  datatype info
  }RecType
  ② void CountSort(RecType a[],b[],int n)
  //计数排序算法,将a中记录排序放入b中
  {for(i=0;i  {for(j=0,cnt=0;j  if(a[j].key  b[cnt]=a[i];
  }
  }//Count_Sort
  ③ 对于有n个记录的表,关键码比较n2次。
  ④ 简单选择排序算法比本算法好。简单选择排序比较次数是n(n-1)/2,且只用一个交换记录的空间;而这种方法比较次数是n2,且需要另一数组空间。
  [算法讨论]因题目要求“针对表中的每个记录,扫描待排序的表一趟”,所以比较次数是n2次。若限制“对任意两个记录之间应该只进行一次比较”,则可把以上算法中的比较语句改为:
  for(i=0;i  for(i=0;i  for(j=i+1;j  if(a[i].key

第4题:

设有1000个无序的元素,希望用最快的方式挑选出其中前10个最大元素,效率最高的排序方法是( )。

A.堆排序

B.快速排序

C.基数排序

D.起泡排序


正确答案:A

第5题:

若待排序的记录数目较少且已按关键字基本有序,则宜采用______排序算法。

A.快速排序

B.插入排序

C.选择排序

D.冒泡排序


正确答案:D
解析:不同的排序方法各有优缺点,可根据需要运用到不同的场合。在选取排序算法时需要考虑以下因素:待排序的记录个数n、记录本身的大小、关键字的分布情况、对排序稳定性的要求、语言工具的条件及辅助空间的大小。依据这些因素可得以下结论:若待排序的记录数目n较小时,可采用插入排序和选择排序;若待排序记录按关键字基本有序,则宜采用直接插入排序或冒泡排序;当n很大且关键字的位数较少时,采用链式基数排序较好;若n较大,则应采用时间复杂度为O(nlogn)的排序方法——快速排序、堆排序、归并排序。

第6题:

设有7000个无序的元素,希望用最快的速度挑选出其中前5个最大的元素,最好选用()法。

:A冒泡排序

B快速排序

C堆排序

D基数排序


参考答案:C

第7题:

设有1000个无序的元素,希望用最快的速度选出其中前20个最大的元素,最好用()排序方法。

A.冒泡排序

B.快速排序

C.堆排序

D.希尔排序


参考答案:C

第8题:

设有5000个元素,希望用最快速度挑选出其中前10个最大的元素,在以下的排序方法中,采用那一种最好( )。

A: 快速排序

B: 堆排序

C: 归并排序

D: 基数排序和shell排序


正确答案: B

第9题:

设n个待排序的记录关键字,则在堆排序中需要()个辅助记录单元。

A.1

B.12

C.60

D.15


正确答案:A

第10题:

在每一趟排序过程中,都将待排序序列中最大关键字选出来,并将它从待排序序列中剔除,继续对剩余元素进行同样操作的排序方法,这种排序方法称为( )。

A.基数排序

B.堆排序

C.起泡排序

D.选择排序


正确答案:B
解析:若将堆看成一个完全二叉树对应的序列,则完全二叉树中所有非终端结点的值均不大于(不小于)其左右孩子结点的值。堆排序每次都选出最大或最小的结点。

更多相关问题