美文网首页
20220815笔记

20220815笔记

作者: 码农孤磊 | 来源:发表于2022-08-15 21:25 被阅读0次
  • 说说常用的排序算法和其时间复杂度

  • 100万用户如何根据年龄排序

  • 深度优先和广度优先搜索算法

  • 如何快速获取Top10热门搜索关键词

  • 单向链表反转怎么实现?

  • 如何判断链表有环

  • 如何找到单向链表的中间元素

说说常用的排序算法和其时间复杂度

类别 排序方法 时间复杂度 空间复杂度 稳定性
平均情况 最好情况 最坏情况 辅助存储
插入排序 直接插入 O(n2) O(n) O(n2) O(1) 稳定
Shell排序 O(n1.3) O(n) O(n2) O(1) 不稳定
选择排序 直接选择 O(n2) O(n2) O(n2) O(1) 不稳定
堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定
交换排序 冒泡排序 O(n2) O(n) O(n2) O(1) 稳定
快速排序 O(nlog2n) O(nlog2n) O(n2) O(1) 不稳定
归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 稳定
基数排序 O(d(r+n)) O(d(n+rd) O(d(n+r)) O(rd+n) 稳定

注:基数排序的复杂度中,r表示关键字的基数,d表示长度,n表示关键字的个数

100万用户如何根据年龄排序

可以通过桶排序、基数排序、基数排序

  • 桶排序:把数据分到M个桶内,希望桶内的数据实现均匀的,并且桶与桶之间有着天然额大小顺序。极端情况下会退化成O(nlogn),比较适合外部排序,在进行划分同数据的时候,可能出现桶数据不均匀的情况,可以选择再多的数据桶内继续划分桶,直到桶数据可以加载到内存中为止。

    将用户按预估年龄合理划分桶的数量,之后将用户简单分组至桶中,再分别对桶内数据按照常用排序算法进行排序,全部完成以后再将桶进行排序得出最终结果。

  • 计数排序:将数据逐一统计不同数据的数量,再将其按照排序规则逐一输出以得到最终结果。

    年龄排序可以创建1-100的的数组,遍历数据将其按照年龄将对应索引的值自增。完成以后从小到大输出索引,同时值自减直至为零再跳到下一个索引。

  • 基数排序:基数排序和计数排序有点类似,不过不是整个数据一起判断,而是先排个位,再排十位以此类推..

深度优先和广度优先搜索算法

  • 广度优先算法:一般称为BFS,在查找的时候一层一层的向前查找,直到找到目标。比较适合图的搜索,例如多个站点,找出两个站点之间最近的路线。

    一般通过三个属性记录:

    • visited:一个布尔数组,记录节点是否被访问过,访问过为真,没有则为假。
    • vertex:记录上一层的顶点,用来访问当前层其他还没有访问的节点。
    • prev:记录搜索路径,保存当前节点的路径,以便输出结果。
  • 深度优先算法:一般称为DFS,查找的时候先从一个节点往下搜索到底,没有找到则回溯。比较适合树的查找,例如走迷宫问题。

    在走迷宫问题中先随意走一个路口,直到走到尽头,发现出口则直接返回,没有的话就回溯往回走,继续下一个路口。

如何快速获取Top10热门搜索关键词

可以通过优先级队列实现,一般队列是遵循先进先出原则,而优先级队列不是。在优先级队列中数据的出队顺势是根据优先级来的,优先级越高越先出队。

单向链表反转怎么实现?

首先将头节点指向第二个节点,之后获取第二个节点,将其指向第三个节点。。以此类推,直到完全遍历转换完成。

如何判断链表有环

设定两个指针,分别为one、two。

两指针都是从头节点开始,one指针每次前进一步,two指针每次前进两步,一直前进,直到遇到尾节点或者两指针相等时退出。

如何找到单向链表的中间元素

跟上一问差不多。

设定两个指针,分别为one、two。

两指针都是从头节点开始,one指针每次前进一步,two指针每次前进两步,一直前进,当two节点为空时,one节点所处位置即为中间节点。

本文使用 文章同步助手 同步

相关文章

  • 读书收获

    中原焦点团队---欧阳小兰讲师14期分享533天20220815来70观22咨55 20220815 读书笔记: ...

  • 20220815笔记

    说说常用的排序算法和其时间复杂度 100万用户如何根据年龄排序 深度优先和广度优先搜索算法 如何快速获取Top10...

  • 践行阳明心学日精进第廿一天

    20220815日精进 【早上好#顔兮#20220815日精进第21天】 表现分:9(自己打分,满分10分) 体验...

  • 践行阳明心学日精进第廿一天

    20220815日精进 【早上好#顔兮#20220815日精进第21天】 表现分:9(自己打分,满分10分) 体验...

  • 20220815

    day15三亚疫情,外面的天还没有亮。夜里总是醒来,然后翻翻手机,看看最新疫情情况,看看自己,还是绿码。用力嗅一嗅...

  • 20220815

    20220815 周一 晴 27-36 昨天没跑步,游泳去了,今天跑上。 上周跑步的时候就看到栾树开花了,今天才停...

  • 【20220815】

    Yeo今天发工资了,来上海后的第一份工资,他早就说要请我吃饭。 之前本来想吃烤羊腿,今天他又想吃铁锅炖大鹅,下午下...

  • 20220815

    值班到11点下班回娘家,午饭给小外甥女悦悦打最后一针狂犬疫苗。 闲聊中,悦悦提起说得有五六年没见妞妞了。悦悦比妞妞...

  • 20220815

    华宝添益:99.994买入100,9999.4 99.996卖出100,9999.6 西子转债...

  • 外刊阅读|Australian English

    @20220815友邻外刊The 'Hard Yakka' of Defining Australian Engl...

网友评论

      本文标题:20220815笔记

      本文链接:https://www.haomeiwen.com/subject/fkblgrtx.html