主观题

快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的三个步骤如下: 分解:选择一个枢轴(pivot)元素划分数组。将数组A[p..r]划分为两个子数组(可能为空) A[p..q-1]和A[q+1..r],使得A[q]大于等于A[p..q-1]中的每个元素,小于A[q+1..r]中的每个元素。q的值在划分过程中计算。 递归求解:通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。 合并:快速排序在原地排序,故不需合并操作。 【问题1】 下面是快速排序的伪代码,请填补其中的空缺。伪代码中的主要变量说明如下: A:待排序数组 p, r:数组元素下标,从p到r q:划分的位置 x:枢轴元素 i:整型变量,用于描述数组下标。下标小于或等于i的元素的值小于或等于枢轴元素的值 j:循环控制变量,表示数组元素下标 QUICKSORT( A, p, r ){if ( p 大于 r ){q = PARTITION( A,p,r ) ;QUICKSORT( A, p, q-1 );QUICKSORT( A, q+1, r );}}PARTITION( A, p, r ){x= A[r]; i = p - 1;for( j = p ; j 大于= r - 1; j++ ){if ( A[j] 大于= x ){i = i + 1 ;交换A[i] 和 A[j];}}交换 (1) 和 (2) //注:空(1)和空(2)答案可互换,但两空全部答对方可得分return (3) } 【问题2】(1) 假设要排序包含n个元素的数组,请给出在各种不同的划分情况下,快速排序的时间复杂度,用O记号。最佳情况为 (4)平均情况为 (5)最坏情况为 (6) (2) 假设要排序的n个元素都具有相同值时,快速排序的运行时间复杂度属于哪种情况? (7)(最佳、平均、最坏) 【问题3】(1) 待排序数组是否能被较均匀地划分对快速排序的性能有重要影响,因此枢轴元素的选取非常重要。有人提出从待排序的数组元素中随机地取出一个元素作为枢轴元素,下面是随机化快速排序划分的伪代码-利用原有的快速排序的划分操作,请填充其中的空缺处。其中,RANDOM( i,j )表示随机取i到j之间的一个数,包括i和j。 RANDOMIZED-PARTITION( A,p,r ){i = RANDOM( p,r );交换(8)和(9); //注:空(8)和空(9)答案可互换,但两空全部答对方可得分return PARTITION( A,p,r );} (2) 随机化快速排序是否能够消除最坏情况的发生? (10)(是或否)

查看答案
该试题由用户784****63提供 查看答案人数:20625 如遇到问题请联系客服
正确答案
该试题由用户784****63提供 查看答案人数:20626 如遇到问题请联系客服
热门试题
数组的排序算法只有冒泡排序这一种 为实现快速排序算法,待排序列适合采用() 快速排序是一种不稳定排序方法。() 快速排序是不稳定的排序算法() 对用数组存储的线性表(16,15,32,11,6,30),用快速排序算法进行由小到大排序,若排序下标范围为0~5,选择元素16作为支点,调用一趟快速排序算法后,元素16在数组中的下标位置为() 计算机排序法中,快速排序是对那种排序法的一种改进() 在对数组排序时,冒泡法是最不稳定的排序算法 快速排序是一种不稳定的排序算法,其最差情况下的时间复杂度为O(nlogn)() 冒泡排序和快速排序都是基于交换两个逆序元素的排序方法,冒泡排序算法的最坏时间复杂度是O(n*n),而快速排序算法的最坏时间复杂度是O(nlog2n),所以快速排序比冒泡排序算法效率更高。( ) 就排序算法所用的辅助空间而言,堆排序,快速排序,归并排序的关系是 ( ) 就排序算法所用的辅助空间而言,堆排序、快速排序和归并排序的关系是【 ?? 】。 插入排序是一种简单实用的工具,在对数组排序时,我们可能用二分查找,对要插入的元素快速找到在已经排好元素序列中的位置。下面的描述中正确的是()。 堆排序是一种稳定的排序算法。( ) ●用插入排序和归并排序算法对数组进行从小到大排序,则分别需要进行 (65) 次数组元素之间的比较。(65) 快速排序算法的平均时间复杂度是() 快速排序算法的性能取决于 使用选择排序算法编写程序,实现对数组{25,24,12,76,101,96,28}的排序 在最坏情况下,快速排序的效率仍然高于其他所有排序算法。 快速排序算法是,在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了()算法设计策略。已知确定着基准元素操作的时间复杂度为O(n),则快速排序算法的最好和最坏情况下的时间复杂度为 () 完成数组int[] a = {100,40, 60, 87, 34, 11, 56, 0}的快速排序、冒泡排序
购买搜题卡会员须知|联系客服
会员须知|联系客服
关注公众号,回复验证码
享30次免费查看答案
微信扫码关注 立即领取
恭喜获得奖励,快去免费查看答案吧~
去查看答案
全站题库适用,可用于聚题库网站及系列App

    只用于搜题看答案,不支持试卷、题库练习 ,下载APP还可体验拍照搜题和语音搜索

    支付方式

     

     

     
    首次登录享
    免费查看答案20
    登录成功
    首次登录已为您完成账号注册,
    可在【个人中心】修改密码或在登录时选择忘记密码
    账号登录默认密码:手机号后六位