五分钟学算法之经典算法题:排序算法(360校招笔试题)
今天分享的一道算法面试题来源于 360校园招聘2015届技术类笔试题 。
题目描述
用某种排序方法对关键字序列(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 :快速排序。
欢迎前往我的个人网站进行阅读:www.cxyxiaowu.com
原文地址:https://www.cxyxiaowu.com/2536.html
❤️ 看完三件事:
如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个忙:
- 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
- 关注我和专栏,让我们成为长期关系
- 关注公众号「五分钟学算法」,第一时间阅读最新的算法文章,公众号后台回复 1024 送你 50 本 算法编程书籍。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?