在Ruby中对数字和字符串进行排序的有效方法?

vik*_*sad 6 ruby arrays sorting string integer

输入:

arr = [4,2,'b',5,'c','a',7]
Run Code Online (Sandbox Code Playgroud)

输出:

[2,4,5,7,'a','b','c']
Run Code Online (Sandbox Code Playgroud)

我可以想到:

int_arr = arr.select {|x| x.instance_of?(Integer)}.sort
str_arr = arr.select {|x| x.instance_of?(String)}.sort

int_arr + str_arr
Run Code Online (Sandbox Code Playgroud)

请提出一种有效的方法。

Seb*_*lma 7

一种方法是partition通过将这些元素设置为Integer 来对数组进行确定,以确保它们首先保留,然后对每个数组的元素进行排序:

[4,2,'b',5,'c','a',7].partition { |e| e.is_a?(Integer) }.flat_map(&:sort)
# [2, 4, 5, 7, "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)