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


    点击蓝色“五分钟学算法”关注我哟

    加个“星标”,天天中午 12:15,一起学算法

    640?wx_fmt=jpeg

    作者 | 程序员小吴

    来源 | 五分钟学算法

    题目描述

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

    A、直接选择排序

    B、直接插入排序

    C、堆排序

    D、快速排序

    题目分析

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

    640?wx_fmt=gif

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

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

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

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

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

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

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

    640?wx_fmt=png

    更多内容

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

    专题地址:

    https://www.cxyxiaowu.com/jingdiansuanfati

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



    640?wx_fmt=jpeg

  • 相关阅读:
    最小生成树 kruskal算法&prim算法
    Floyd算法解决多源最短路问题
    dijkstra算法解决单源最短路问题
    改进后的作业排序
    第一篇 基本结构
    循环轮转算法
    在线工具生成接入信息mqtt.fx快速接入阿里云
    NodeMCU使用ArduinoJson判断指定键值对存在与否
    NodeMCU获取并解析心知天气信息
    快速导出jekyll博客文件进行上传部署
  • 原文地址:https://www.cnblogs.com/csnd/p/16675137.html
Copyright © 2020-2023  润新知