20220815笔记

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

  • 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节点所处位置即为中间节点。

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容