登录/
注册
题库分类
下载APP
帮助中心
首页
考试
搜题
APP
当前位置:
首页
>
查试题
>
在寻找n个元素中第k小元素的问题中,如采用快速排序算法思想,运用分治法对n个元素进行划分,如何选择划分基准?下面答案最合理
主观题
在寻找n个元素中第k小元素的问题中,如采用快速排序算法思想,运用分治法对n个元素进行划分,如何选择划分基准?下面答案最合理
查看答案
该试题由用户699****76提供
查看答案人数:40299
如遇到问题请
联系客服
正确答案
该试题由用户699****76提供
查看答案人数:40300
如遇到问题请
联系客服
搜索
相关试题
换一换
主观题
在寻找n个元素中第k小元素问题中,如快速排序算法思想,运用分治算法对n个元素进行划分,如何选择划分基准?下面答案解释最合理
答案
单选题
在寻找n个元素中第k小元素问题中如快速排序算法思想运用分治算法对n个元素进行划分如何选择划分基准下面答案解释最合理()
A.随机选择一个元素作为划分基准 B.取子序列的第一个元素作为划分基准 C.用中位数的中位数方法寻找划分基准 D.以上皆可行。但不同方法算法复杂度上界可能不同
答案
主观题
在寻找n个元素中第k小元素的问题中,如采用快速排序算法思想,运用分治法对n个元素进行划分,如何选择划分基准?下面答案最合理
答案
单选题
在 n 个数的数组中确定其第 i(1 ≤ i ≤ n) 小的数时,可以采用快速排序算法中的划分思想 , 对 n 个元素划分,先确定第 k 小的数,根据 i 和 k 的大小关系 , 进一步处理,最终得到第 i 小的数。划分过程中,最佳的基准元素选择的方法是选择待划分数组的( 此空作答 )元素。此时,算法在最坏情况下的时间复杂度为(不考虑所有元素均相等的情况)( )。
A.Θ(n) B.Θ(lgn) C.Θ(nlgn) D.Θ(n2)
答案
单选题
在n个数的数组中确定其第i(1≤i≤n)小的数时,可以采用快速排序算法中的划分思想,对n个元素划分,先确定第k小的数,根据i和k的大小关系,进一步处理,最终得到第i小的数。划分过程中,最佳的基准元素选择的方法是选择待划分数组的( )元素。此时,算法在最坏情况下的时间复杂度为(不考虑所有元素均相等的情况)(此空作答)。
A.第一个 B.最后一个 C.中位数 D.随机一个
答案
单选题
在n个数的数组中确定其第i(1≤i≤n)小的数时,可以采用快速排序算法中的划分思想,对n个元素划分,先确定第k小的数,根据i和k的大小关系,进一步处理,最终得到第i小的数。划分过程中,最佳的基准元素选择的方法是选择待划分数组的(64)元素。此时,算法在最坏情况下的时间复杂度为(不考虑所有元素均相等的情况)(65)。
A.Θ(n) B.Θ(lgn) C.Θ(nlgn) D.Θ(n2)
答案
单选题
在n个数的数组中确定其第i(1≤i≤n)小的数时,可以采用快速排序算法中的划分思想,对n个元素划分,先确定第k小的数,根据i和k的大小关系,进一步处理,最终得到第i小的数。划分过程中,最佳的基准元素选择的方法是选择待划分数组的(64)元素。此时,算法在最坏情况下的时间复杂度为(不考虑所有元素均相等的情况)(65)。
A.第一个 B.最后一个 C.中位数 D.随机一个
答案
判断题
Sherwood算法随机选择一个数组元素作为划分标准求解k小元素问题,保证线性时间的平均性能。
答案
主观题
在对n个元素进行冒泡排序的过程中,第1趟排序至多需要进行( )对相邻元素之间的交换。
答案
单选题
如果只想得到一个序列中第K个元素之前的部分排序,那么最好采用_______________方法。
A.shell排序 B.快速排序 C.直接选择排序 D.堆排序
答案
热门试题
若对n个元素进行直接插入排序,则进行第i趟排序过程前,有序表中的元素个数为 ______。
在对n个元素进行快速排序的过程中,最好情况下需要进行躺()
采用排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法是( )。
对下列4个序列用快速排序方法进行排序,以序列的第1个元素为基准进行划分。在第1趟划分过程中,元素移动次数最多的是()
对具有n个元素的序列来采用冒泡排序法进行排序,排序的趟数为n-1。()
对于具有n个元素的序列采用堆积排序法进行排序,排序的总趟数为n-1()
采用下列排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法有()。
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了(请作答此空)算法设计策略。已知确定基准元素操作的时间复杂度为Θ(n),则快速排序算法的最好和最坏情况下的时间复杂度为( )。
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了( )算法设计策略。已知确定着基准元素操作的时间复杂度为 O(n) ,则快速排序算法的最好和最坏情况下的时间复杂度为( 此空作答 )。
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了( 此空作答 )算法设计策略。已知确定着基准元素操作的时间复杂度为 O(n) ,则快速排序算法的最好和最坏情况下的时间复杂度为()。
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了()算法设计策略。已知确定基准元素操作的时间复杂度为Θ(n),则快速排序算法的最好和最坏情况下的时间复杂度为()
快速排序算法是,在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了()算法设计策略。已知确定着基准元素操作的时间复杂度为O(n),则快速排序算法的最好和最坏情况下的时间复杂度为 ()
n个元素排序问题,如果只能通过元素比较交换构造算法,则n个处理器的并行排序算法达到()的运行时间才是代价最优的。
在对n个元素进行快速排序的过程中,最坏情况下的时间复杂度为( )
在对n个元素进行快速排序的过程中,平均情况下的时间复杂度为( )
在一个长度为n的顺序表中删除第i个元素,要移动()个元素,如果要在第i个元素前插入一个元素,要后移()个元素
快速排序算法是,在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了 (请作答此空) 算法设计策略。已知确定着基准元素操作的时间复杂度为O(n),则快速排序算法的最好和最坏情况下的时间复杂度为 ( ) 。
快速排序算法是,在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了 ( ) 算法设计策略。已知确定着基准元素操作的时间复杂度为O(n),则快速排序算法的最好和最坏情况下的时间复杂度为 (请作答此空) 。
阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】下面的程序利用快速排序中划分的思想在整数序列中找出第 k 小的元素(即 将元素从小到大排序后,取第 k 个元素)。对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数 作为基准值,然后根据基准值进行划分,从而将待排序的序列划分为不大于基准 值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和 右子序列分别进行快速排序,最终得到非递减的有序序列。例如,整数序列“19, 12, 30, 11,7,53, 78, 25"的第 3 小元素为 12。整数序列“19, 12,7,30, 11, 11,7,53. 78, 25, 7"的第 3 小元素为 7。函数 partition(int a[], int low,int high)以 a[low]的值为基准,对 a[low]、 a[low+l]、…、a[high]进行划分,最后将该基准值放入 a[i] (low≤i≤high),并 使得 a[low]、a[low+l]、,..、A[i-1]都小于或等于 a[i],而 a[i+l]、a[i+2]、..、 a[high]都大于 a[i]。函 教 findkthElem(int a[],int startIdx,int endIdx,inr k) 在 a[startIdx] 、 a[startIdx+1]、...、a[endIdx]中找出第 k 小的元素。【代码】#include <stdio.h>#include <stdlib.h>
Int partition(int a [],int low, int high){//对 a[low..high]进行划分,使得 a[low..i]中的元素都不大于 a[i+1..high]中的 元素。int pivot=a[low]; //pivot 表示基准元素 Int i=low,j=high;while(( 1) ){While(i<j&&a[ j]>pivot)--j; a[i]=a[ j] While(i<j&&a[i]>pivot)++i; a[ j]=a[i]}(2) ; //基准元素定位 return i;}Int findkthElem(int a[],int startIdx,int endIdx, int k){//整数序列存储在 a[startldx..endldx]中,查找并返回第 k 小的元素。if (startldx<0 ||endIdx<0 || startIdx>endIdx || k<1 ||k-l>endIdx||k-1<startIdx)Return-1; //参数错误 if(startIdx<endldx){int loc=partition(a, startIdx, endldx); ∥进行划分,确定基准元素的位置
if (loc==k-1) ∥找到第 k 小的元素return (3) ;if(k-l <loc)//继续在基准元素之前查找 return findkthElem(a, (4) ,k);else //继续在基准元素之后查找 return findkthElem(a, (5) ,k);}return a[startIdx]; }int main(){int i, k; int n;int a[] = {19, 12, 7, 30, 11, 11, 7, 53, 78, 25, 7}; n= sizeof(a)/sizeof(int) //计算序列中的元素个数 for (k=1;k<n+1;k++){for(i=0;i<n;i++){ printf(“%d/t”,a[i]);}printf(“”);printf(“elem %d=%d,k,findkthElem(a,0,n-1,k));//输出序列中第 k
小的元素}return 0;}
在有n个无序无重复元素值的数组中查找第i小的数的算法描述如下:任意取一个元素r,用划分操作确定其在数组中的位置,假设元素r为第k小的数。若i等于k,则返回该元素值;若i小于k,则在划分的前半部分递归进行划分操作找第i小的数;否则在划分的后半部分递归进行划分操作找第k-i小的数。该算法是一种基于()策略的算法。
购买搜题卡
会员须知
|
联系客服
免费查看答案
购买搜题卡
会员须知
|
联系客服
关注公众号,回复验证码
享30次免费查看答案
微信扫码关注 立即领取
恭喜获得奖励,快去免费查看答案吧~
去查看答案
全站题库适用,可用于E考试网网站及系列App
只用于搜题看答案,不支持试卷、题库练习 ,下载APP还可体验拍照搜题和语音搜索
支付方式
首次登录享
免费查看答案
20
次
微信扫码登录
账号登录
短信登录
使用微信扫一扫登录
获取验证码
立即登录
我已阅读并同意《用户协议》
免费注册
新用户使用手机号登录直接完成注册
忘记密码
登录成功
首次登录已为您完成账号注册,
可在
【个人中心】
修改密码或在登录时选择忘记密码
账号登录默认密码:
手机号后六位
我知道了
APP
下载
手机浏览器 扫码下载
关注
公众号
微信扫码关注
微信
小程序
微信扫码关注
领取
资料
微信扫码添加老师微信
TOP