V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rookiedev
V2EX  ›  求职

各种排序算法平常用得少,根本记不住怎么办

  •  
  •   rookiedev · 2018-08-27 11:20:32 +08:00 · 4517 次点击
    这是一个创建于 2315 天前的主题,其中的信息可能已经有所发展或是发生改变。

    排序算法这么多,可能这次看了也照着简单的实现了一下,当时是记住了也知道原理了,但过了一段时间不用又忘了,可是呢面试时面试官又会问这个,问到这个时就有点吞吞吐吐的说不上来,不知道大家对这个怎么处理的,每次准备找工作时去系统的复习一遍吗?

    15 条回复    2018-09-11 14:35:19 +08:00
    ghdgf56
        1
    ghdgf56  
       2018-08-27 11:51:29 +08:00
    对的,面试前刷一遍题不是必须的嘛?面试造火箭,嘴上不能怂了啊>_<
    SkyeX
        2
    SkyeX  
       2018-08-27 12:30:40 +08:00
    自己笔记记下来了,看一遍不需要多少时间哇。
    rookiedev
        3
    rookiedev  
    OP
       2018-08-27 14:10:03 +08:00
    @ghdgf56 好像有的还需要你手动实现呢,这个恐怕需要是真的懂了并且记住了才能实现出来呀
    rookiedev
        4
    rookiedev  
    OP
       2018-08-27 14:10:39 +08:00
    @SkyeX 看一遍不一定会呀
    mortonnex
        5
    mortonnex  
       2018-08-27 14:12:51 +08:00
    记住常用的几种就行了,比如堆排,快排,冒泡,归并

    主要是理解
    rabbbit
        6
    rabbbit  
       2018-08-27 14:20:59 +08:00
    kehr
        7
    kehr  
       2018-08-27 14:27:19 +08:00
    对几种排序算法归归类,重点记推导过程,编码能力再多训练训练,练到“手随心动”的境界,写个排序还是很简单的。
    bobuick
        8
    bobuick  
       2018-08-27 21:25:03 +08:00
    这年头面试还在面排序?
    工作 3 年的,应该没什么可能会面排序了。怎么说也来个什么应用题啊
    rookiedev
        9
    rookiedev  
    OP
       2018-08-28 09:45:07 +08:00
    @bobuick 应用题?还望大佬不吝赐教
    af463419014
        10
    af463419014  
       2018-08-28 11:18:08 +08:00
    我认为手写的话记住快排和堆排就可以了,这两个效率高最常用,都是 n*logn
    区别是快排不稳定而且特殊业务容易出现极端情况 n^2
    堆排相对慢一丢丢,优点是稳定,是 jdk 中的默认排序方法

    量小的数据就冒泡,实现简单,30 秒写完

    其他排序无视
    coordinate
        11
    coordinate  
       2018-08-28 12:04:28 +08:00
    @af463419014 哪个版本的 jdk 使用堆排序的?我记得好像使用’多路快排加插入排序优化‘这种套路比较多。
    bobuick
        12
    bobuick  
       2018-08-28 12:06:10 +08:00
    @rookiedev 是说各类没有明说写排序的,类似一些问题可能用队列结构处理,一些问题回溯法,DP 问题难度略高一般要求能说明思路就差不多了。
    基本都以能说清思路为主,毕竟非 FLAG
    af463419014
        13
    af463419014  
       2018-08-28 12:35:10 +08:00
    @coordinate 抱歉记错了,应该是归并排序
    归并才是在 nlogn 下的稳定排序,堆排不稳定

    附上 Arrays.sort 方法
    默认使用 ComparableTimSort,一种归并排序的优化方案,混合了插入排序和其他优化功能
    也可以选择使用普通的归并排序

    luohuanlh
        14
    luohuanlh  
       2018-08-28 22:40:37 +08:00
    厉害了。
    cheesykris
        15
    cheesykris  
       2018-09-11 14:35:19 +08:00
    @af463419014 兄弟在哪高就
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   942 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:23 · PVG 06:23 · LAX 14:23 · JFK 17:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.