若要从1000个元素中得到10个最小值元素,最好采用()方法。

题目

若要从1000个元素中得到10个最小值元素,最好采用()方法。

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

第1题:

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

A.希尔排序

B.直接插入排序

C.快速排序

D.堆排序


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

第2题:

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

A: 快速排序

B: 堆排序

C: 归并排序

D: 基数排序和shell排序


正确答案: B

第3题:

若要从1000个元素中得到2个最小值元素,最好采用()方法。

A.直接插入排序

B.直接选择排序

C.堆排序

D.快速排序


参考答案:B

第4题:

给定一组长度为n的无序序列,将其存储在一维数组a[O..n-1]中。现采用如下方法找出其中的最大元素和最小元素:比较a[O]和a[n-1],若a[0]较大,则将二者的值进行交换;再比较a[1]和a[n-2],若a[1]较大,则交换二者的值;然后依次比较a[2]和a[n-3]、 a[3]和a[n-4]、…,使得每一对元素中的较小者被交换到低下标端。重复上述方法,在数组的前n/2个元素中查找最小元素,在后n/2个元素查找最大元素,从而得到整个序列的最小元素和最大元素。上述方法采用的算法设计策略是(64)。

A.动态规划法

B.贪心法

C.分治法

D.回溯法


正确答案:C
解析:本题考查算法设计基础知识。任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,解题所需的计算时间往往也越少,从而也较容易处理。分治法的设计思想是:将一个难以直接解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。如果规模为n的问题可分解成k个子问题(1k≤n),且这些子问题互相独立且与原问题相同。递归地求解这些问题,然后将各子问题的解合并得到原问题的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,以至于最后解决原问题需要耗费指数级时间。动态规划算法,通常可按以下几个步骤进行:找出最优解的性质,并刻画其结构特征;递归地定义最优值;以自底向上的方式计算出最优值;根据计算最优值时得到的信息,构造一个最优解。回溯法有“通用的解题法”之称,用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。贪心法是一种不追求最优解,只希望得到较为满意解的方法。贪心法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪心法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪心法不要回溯。

第5题:

一个序列中有若干个元素,若只想得到其中第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是右孩子

第6题:

匈牙利算法进行调整时,没有被直线覆盖到的元素()。

A、减去直线覆盖元素的最小值

B、减去直线交叉处元素的最小值

C、减去没有被直线覆盖到的元素的最小值

D、加上直线交叉处元素的最小值


参考答案:C

第7题:

阅读以下说明和流程图,回答问题将解答填入对应栏。

[说明]

本流程图实现采用递归函数来求一个整数数组中从元素0到元素n中的最小值。该算法思想是这样的,首先我们假设有一个求数组中最小元素的函数,然后,在求某一具有n的元素的数组的最小值时,只要求将前n-1的元素的最小值与第n个元素比较即可。不断地重复这一过程,直到数组中只剩下一个元素,那么它必定是最小值。

注:int min(int X,int y)为返回两数中最小数的函数。

int minInArray(int a[],int n)为返回数组中最小数的函数。

minA为数组中最小值。

[问题l]

将流程图的(1)~(4)处补充完整。

[问题2]

min()函数的定义为(5)。


正确答案:(1) minInArray(an); (2) 1; (3) minA=a[n-1]; (4) minA=min(minInArray(an-1)a[n]); (5) xy?x:y;
(1) minInArray(a,n); (2) 1; (3) minA=a[n-1]; (4) minA=min(minInArray(a,n-1),a[n]); (5) xy?x:y; 解析:本题目考查流程图。
题目是利用递归来求数组中的最小值,则一定是反复的调用一个求数组最小值的函数,直到比较数组中最后只剩下两个数,则(1)中填入的应是“minlnArray(a,n)”,然后,判断n的值是否为1,如果是,则说明数组中只有一个数,则它一定就是最小值,可以直接输出,所以(2)应填入“1”,(3)应填入“minA=a[n]”;如果n的值不是1,则说明要继续递归,则再次调用求数组最小值的函数,把数组前n-1项的最小值同第n项做比较,所以(4)填入“minA=min(minInArray(a,n-1),a[n])”,由于min()是一个比较函数,返回两数中较小的数,我们可以用三元运算符直接定义为x y?x:y。

第8题:

二维教组A[12][18]采用列优先的存储方法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为(31)。

A.429

B.432

C.435

D.438


正确答案:A
解析:本题考查数组元素存储地址的计算。题目中给出了二维数组A[12][18],要求对其采用列优先的存储方法进行顺序存储,它的每列元素个数为12个,且每个元素占3个存储单元,那么存储一列元素就需要12×3=36个存储单元,而数组下标一般从零开始,因此元素A[9][7]表示第10行第8列的元素。根据题目要求,在存储它以前已经存储了7列元素再另加9个,这些元素所占的存储单元个数为36×7+9×3=279。所以元素A[9][7]的地址为150+279=429。

第9题:

二维数组A[12][18]采用列优先的存储方法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为 ( )

A.429

B.432

C.435

D.438


正确答案:A

第10题:

对于具有n个元素的一个数据序列,若只需要得到其中第A个元素之前的部分排序,最好采用(43)。

A.堆排序

B.希尔排序

C.快速排序

D.直接插入排序


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

更多相关问题