前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >五分钟学算法之经典算法题 :排序算法(某东算法工程师比赛)

五分钟学算法之经典算法题 :排序算法(某东算法工程师比赛)

作者头像
五分钟学算法
发布2019-10-30 10:55:37
3780
发布2019-10-30 10:55:37
举报
文章被收录于专栏:五分钟学算法

作者 | 程序员小吴

来源 | 五分钟学算法

题目描述

已知数据表 A 中每个元素距其最终位置 不远 ,为了节省时间,应该采取的算法是()

A、直接选择排序

B、直接插入排序

C、堆排序

D、快速排序

题目分析

我们在之前学习 希尔排序 算法的时候提及到,希尔排序进行到一定阶段(每个元素距离其最终位置不远时)一般都使用 插入排序 来收尾。

一组动画彻底理解希尔排序

如果知道这个很容易知道答案选 B 。

我们也可以通过分析这四个选项的时间复杂度来做判断。

选择排序:对于 n 个元素,每次都需要遍历 n 次(与元素偏移位置没有什么关系),时间复杂度为 O(n2)

插入排序:对于 n 个元素,如果每个元素距离其最终位置平均偏移 c 个单位,则每次比较 c 次,一共比较 n 趟,时间复杂度为 O(cn)。

堆排序:对于 n 个元素,使用堆排序无论元素的位置如何排放时间复杂度都是 O(nlog(n))。

快速排序:对于 n 个元素,即使每次选定的标定点很合适,它的最好时间复杂度也是 O(nlog(n))。

当然,如果你熟悉它们的最好情况下的时间复杂度也是能立马得出答案的。

更多内容

你可以在电脑端访问我的个人博客下的专题 经典算法题 来阅读更多相关的面试题。

专题地址:

https://www.cxyxiaowu.com/jingdiansuanfati

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 题目分析
  • 更多内容
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档