五分钟学算法之经典算法题:排序算法(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 不是最小的记录,故排除 选择排序

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


v2-80d1ed88443b9c2f33c245c1caa1a308_b.gif



v2-91c7b761b0a6c7c17d2b9d9e7dfd41ad_b.gif



v2-61d3025ffec8f41e9077a3e730e52367_b.gif


对于 希尔排序 而言,需要知道 增量 ,根据动画我们可以理解为 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 :快速排序。

推荐在我的个人博客进行阅读:

经典算法题:排序算法(360校招笔试题)-五分钟学算法


我的专栏:

和程序员小吴一起学算法


❤️ 看完三件事:

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个忙:

  1. 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-
  2. 关注我和专栏,让我们成为长期关系
  3. 关注公众号「五分钟学算法」,第一时间阅读最新的算法文章,公众号后台回复 1024 送你 50 本 算法编程书籍。

v2-7d84a7f4361bd5f8d21b98b9edb0b1b4_b.jpg

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值