【问题标题】:Sorting a 2d array in ruby [closed]在红宝石中对二维数组进行排序[关闭]
【发布时间】:2014-08-05 22:44:20
【问题描述】:

我有一个二维数组,有四列(字母 A--D),每列有三行。这是我的数组的可视化表示:

A  B  C  D  
1  3  9  0
2  8  2  1
8  4  10 3

我想按每列中的最小数字对列进行排序。这就是我希望我的数组在排序后的样子:

D  A  C  B
0  1  9  3
1  2  2  8
3  8  10 4

D 列是第一位的,因为该列中最小的数字是0,而0 是所有列中最小的数字。 A 紧随其后,因为 A 中的最小数字是 1,而 1 小于 2C 列中的最小数字em>) 和3B 列中的最小数字)。

任何帮助将不胜感激。

【问题讨论】:

  • 你能分享一下你的尝试吗?
  • 您的二维数组在实际实现中的样子如何?列(单元格)是否嵌套在行中,反之亦然?你的措辞听起来像后者,但我几乎总是看到前者。

标签: ruby arrays algorithm sorting


【解决方案1】:

我认为可以:

arr = [[1,2,8], [3,8,4], [9,2,10], [0,1,3]]
arr.sort! { |a, b| a.min <=> b.min }

【讨论】:

    【解决方案2】:
    input = %q(1  3  9  0
    2  8  2  1
    8  4  10 3)
    
    array = input.split("\n").map(&:split).transpose
    
    result = array.map{|x| x.map(&:to_i).sort}.sort
    #=> [[0, 1, 3], [1, 2, 8], [2, 9, 10], [3, 4, 8]]
    

    【讨论】:

    • 我可以问一下,当它与问题中提供的信息一起正常工作时,为什么它被否决了?
    • 我没有投反对票,但是您构建输入数组的方式是不必要的。
    • 只是为了帮助 OP,因为他没有提到如何创建二维数组。
    • OP 说“这是我的数组的可视化表示”,所以我们可以假设他有一个常规的 Ruby 数组,并且他试图对我们有所帮助。您认为他从文本开始的假设很可能是不正确的。
    • 你不是在问为什么它不能正常工作时被否决?
    猜你喜欢
    • 2019-11-03
    • 2014-09-28
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多