阮一峰老师又被人怼了,这次是关于 JavaScript 的快速排序实现

2018-05-11 13:43:34 +08:00
 cairnechen
起因是 ideawu 发微博吐槽几乎所有的前端面试者的快排实现都是阮一峰的错误版本。

v 友们怎么看这个问题?

完整分析见 https://juejin.im/post/5af4902a6fb9a07abf728c40
37143 次点击
所在节点    JavaScript
194 条回复
duan602728596
2018-05-11 18:10:34 +08:00
救救前端的孩子吧,现在前端又是文又是理的,已经变成大杂烩了
swulling
2018-05-11 18:12:14 +08:00
这个文章里错误也不少。
比如文章作者可以解释下 10000000 元素排列,为什么 O(nlogn)的算法竟然只比被作者钦定为是 O(n^2)的算法快一倍。

合理么?其实阮一峰那个时间复杂度并不是 O(n^2)
gggxxxx
2018-05-11 18:18:08 +08:00
我怎么觉得有点孔乙己的风格了呢。
单说多声明几个临时变量这点,就能被判定为是错的?在我看来,既然是写高级编程语言,声明几个变量还有标准不成?
至于效率比拼,这个值得认真讨论。但是不应该来评判面试者。
Jakesoft
2018-05-11 18:25:08 +08:00
借楼问一下,排序算法(尤其是快排),开辟两个临时数组真的不可取吗?上次这么写被面试官怼了
silhouette
2018-05-11 18:25:51 +08:00
@zhicheng 对,要扣细节得写成 int mid=(high-low)/2+low; 防一个溢出
y835L9DyC5XD09kq
2018-05-11 18:35:13 +08:00
不是很懂,错了就是错了,哪有那么多话讲?
wshcdr
2018-05-11 18:35:57 +08:00
阮老师错的地方多了...
y835L9DyC5XD09kq
2018-05-11 18:36:34 +08:00
@grantonzhuang 如果你的同行都是评论里那些“信徒”,你应该感到幸运,因为这意味着你只要稍微动动脑子就能超越大多数。。。。
bucky
2018-05-11 18:44:51 +08:00
@kangkang 错了本来没什么,可是好多人批评阮一峰套路都是,阮一峰这么低级的错误都犯,真垃圾,看阮一峰是浪费时间,会让你误入歧途,阮一峰是转行的三流程序员,更有甚者还要骂前端的从业者都是垃圾,整个前端都不入流等等
bucky
2018-05-11 18:46:07 +08:00
@CastleBUPT 大佬,请问你学了算法后对你的编程能力有哪些实质性的提高?
florije
2018-05-11 18:48:43 +08:00
他的博客很不靠谱呀,前面学习 js 的 promise 机制,看了下他的内容,发现根本就不对……
这种热门博客作为小白普及类还是可以,要是当作参考还是算了吧。
wysnylc
2018-05-11 18:51:30 +08:00
@orangeade #7 芝士 奶油 奶酪其实是一个东西,菠萝和凤梨也是一个
loveCoding
2018-05-11 18:57:01 +08:00
jdk 还有 bug 呢
cuzfinal
2018-05-11 19:03:05 +08:00
阮一峰的代码起码告诉了别人快排里分治的思想
DOLLOR
2018-05-11 19:06:06 +08:00
莫名其妙就上升到整个前端了,不如更上一层楼,黑整个程序员群体岂不美哉
roychan
2018-05-11 19:06:59 +08:00
前端为什么要学快排?直接 array.sort() 就可以了。
h1367500190
2018-05-11 19:59:14 +08:00
@grantonzhuang 别在意,做好自己的事情就好。我是 PHP+前端,简直是鄙视链最最底端,这种酸味的评论见的多了。“这个世界有两种语言,一种是天天被黑的,一种是没人用的”。评论里很多人估计连 HTML5 的自关闭标签都写错,却到处对前端抛出论点却没有论据,守着自己的一亩三分地。

哪天前端不被喷了才是最需要担心的。毕竟现在是个程序员还能用 jQuery 写个页面,过个 5-10 年,就能把一批“大神”刷掉
h1367500190
2018-05-11 20:03:36 +08:00
@shyrock 你看他最后一行:
return quickSort(left).concat([pivot], quickSort(right));
CastleBUPT
2018-05-11 20:07:56 +08:00
@bucky
作为菜鸡,我觉得解算法题对搬砖的来说,
一个是能把握自己写的代码的时间和空间复杂度,不至于太离谱,会弄个 O(n3)出来;
另一个是锻炼自己解小问题的能力;
还有就是算法的套路和工程的套路差不多,会的套路越多,看工程代码和写工程代码就越快。
livc
2018-05-11 20:22:18 +08:00
ryf 好像对待别人的纠错从来没改吧?

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

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

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

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

© 2021 V2EX