新手问题 矩阵内求最大两个元素值得内建方法,有吗?

babywhy · 2013年04月27日 · 最后由 doitian 回复于 2013年04月27日 · 2315 次阅读

'[1,2,3,4,5].max' 只能求最大的一个元素,想求最大的两个元素呢?

sort.reverse.take(2)

BTW 这是数组不是矩阵吧。

先用#sort,然后再取前两个? 不知道有没有其他更简单的 #1 楼 @ashchan 一个 typo。。数组

@ashchan 有道理。问题中的矩阵其实是 [[1],[2],[3],[4],[5]]flatten 了一下

不过 sort 和 max 的复杂度应该不一样吧(如果数组很大的话。。。) 不知道 ruby 里的这两个是怎样的实现

#4 楼 @Tony612 数组很大的话 sort 很慢。还想知道最大两个数的下标该怎么办呢

#2 楼 @Tony612 嗯,笔误,已改。 #5 楼 @babywhy 这个要 benchmark 一下。自己用遍历(这个可以拿下标)比较的方式计一下时间,看跟 sort 比哪个快。另外,reverse 不知道要花多少时间,如果也有影响的话,就直接取 sort[-2..-1]

#5 楼 @babywhy 去查 api 的文档吧 http://ruby-doc.org/core-2.0/Array.html 这个直接告诉你了也没啥意思

sort 的复杂度是 nlog(n) , n 在 100 万以下 log(n) 当成 1 也可以... 就和遍历差不多。

reverse 直接就是线性的。不用纠结这种可有可无的速度了...

实在在意性能就自己实现下嘛。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号