题目描述

用某种排序方法对关键字序列(25,84,21,47,15,27,68,35,20)进行排序,序列的变化情况采样如下:

20,15,21,25,47,27,68,35,84
15,20,21,25,35,27,47,68,84
15,20,21,25,27,35,47,68,84

请问采用的是以下哪种排序算法()

A. 选择排序

B. 希尔排序

C. 归并排序

D. 快速排序

题目解析

这道题目很好的考察了大家对排序方法过程的理解程度。

对于题目给出的四个选项,很容易就能排除 选择排序,因为对于 选择排序 而言它的操作是 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。

20,15,21,25,47,27,68,35,84

序列中 20 不是最小的记录,故排除 选择排序

接下来的三个选项实际上挺难抉择的,我们首先来回顾一下它们三个的动画。

希尔排序

归并排序

快速排序

对于 希尔排序 而言,需要知道 增量 ,根据动画我们可以理解为 gap = 4  。

先分为四组。

25 15
84 27
21 68
47 35

对这四组分别进行插入排序,加上剩下的 20 变成了

15 27 21 35 25 84 68 47 20

与题目给出的步骤不同,故排除 希尔排序

再来看归并排序动画,逻辑操作就简单了。

先一分为二。

25,84,21,47,15,27,68,35,20

变成了

25,84,21,47

15,27,68,35,20

第二步应该是(这里与动画稍许不同,没有切分到底)

15 25 27 68 35 20 84 21 47

与题目给出的步骤不同,故排除 归并排序

所以,答案选 D :快速排序。

问题来了,你知道标定点是哪个数字吗?可以留言说说哟。

---以上,便是今日分享,觉得不错,还请点个在看,谢谢~


©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 时间序列&日期学习笔记大全(上)
  2. 不会时间序列预测?不要紧,大神来教你
  3. 详解之php反序列化
  4. 直击PHP序列化和反序列化原理
  5. php之json与xml序列化/反序列化
  6. 详解PHP的session反序列化漏洞问题
  7. 详解PHP序列化和反序列化
  8. PHP序列化和反序列化语法差异问题

随机推荐

  1. Java集合总结【面试题+脑图】,将知识点一
  2. 装饰器模式在开源代码中的应用
  3. LinkedHashMap就这么简单【源码剖析】
  4. 外观模式在开源代码中的应用
  5. TreeMap就这么简单【源码剖析】
  6. 多线程三分钟就可以入个门了!
  7. 享元模式在开源代码中的应用
  8. Android(安卓)串口的踩坑之路
  9. 3: Zabbix5.0自动发现磁盘目录监控
  10. 这应该是堪称完美的“Android Framework