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

2018-08-27 11:20:32 +08:00
 rookiedev

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

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

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

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

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

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

luohuanlh
2018-08-28 22:40:37 +08:00
厉害了。
cheesykris
2018-09-11 14:35:19 +08:00
@af463419014 兄弟在哪高就

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/483564

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX