刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
单选题
小明的班级有8个同学,每个人身上贴了一个不同的数字,
现在要举办一场”快速排序比赛“,规则如下:
(1)设置两个变量i, j,排序开始时,i=0,j=N-1 。
(2)以第一个元素作为关键数据,将其赋值给key, 即key = A[0] 。
(3)从j开始向前搜索,即由后向前搜索(j--), 找到第一个小于key的值A[j],将A[j]与A[i]交换。
(4)从i开始向后搜索,即由前向后搜索(i++),找到第一个大于key的值A[i], 将A[i]与A[j]交换。
(5)重复第(3),(4)步骤,直到i==j;
(6)分成的前后两组数据,分别再按(1)~(5)递归排序,直到全部数据有序排列。
初始队伍顺序:[5, 3, 9, 1, 7, 2, 8, 6]
请问如果第一趟快速排序后,分组结果是什么?( )
A
B
C
D
使用微信搜索喵呜刷题,轻松应对考试!
答案:
解析:
根据题目描述,我们知道初始队伍顺序为 [5,3,9,1,7,2,8,6],快速排序的基本思想是采用分治法。在第一趟排序中,选择第一个元素 5 作为关键数据(key),将其与最后一个元素交换(这里是 6),得到新的数组 [6,3,9,1,7,2,5,暂存位置]。然后从 j 开始向前搜索(这里是 j = 7),找到第一个小于 key 的值(这里是 2),将 2 与暂存位置交换,得到数组 [6,3,9,1,暂存位置(代表之前的位置 5),暂存位置(代表之前的位置 2),7]。接着从 i 开始向后搜索(这里是 i = 0),找到第一个大于 key 的值(这里是第一个暂存位置),进行交换得到 [6,暂存位置(代表之前的位置 5),暂存位置(代表之前的位置 2),9,1,7]。至此第一趟排序结束。根据这个过程我们可以得出第一趟排序后的分组结果是前面是 [2, 3, 1],后面是 [9, 7],因为数组后半部分已经有序排列了。所以正确答案是 C 选项。
创作类型:
原创
本文链接:小明的班级有8个同学,每个人身上贴了一个不同的数字, 现在要举办一场”快速排序比赛“,规则如下: (
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!



