在ruby中对2d数组进行排序

时间:2014-08-05 22:44:21

标签: ruby arrays algorithm sorting

我有一个带有四列的二维数组(字母 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小于2(列中的最小数字) C )和3(列 B 中的最小数字)。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

我认为会这样做:

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

答案 1 :(得分:0)

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]]