数组是
array = [[1],[2],[3],[0],[1,2],[1,0],[0,1]]
希望排序整个数组,先按照数组 元素个数 ,如果个数相同再 按照首个元素大小 。
array.sort_by {|a| [a.size, a[0]] }
众所周知, sort 方法默认是为字符串排序的,
结果为
如果想要降序该怎么做呢,这时候你要用到字符串的 localeCompare 方法
结果为
不知道你是否会在 b.localeCompare(a)) 还是 a.localeCompare(b)) 上纠结,所幸,可供的选择不多,死记硬背完全可行,比如
对于数字也是这样的
对于 sort 方法
看一个冒泡排序的实现
sort 方法只是将 arr[i] >arr[i + 1] 还是 arr[i] <arr[i + 1] 的决定权交给了我们
至于 sort 方法的实现就更加有趣的,并不是简单的快排,会根据数组的长度、递归的深度等选择不同方式,记得之前写过一篇关于快排的文章 https://www.jianshu.com/p/7186c0b2d23f ,相比之下就要简陋的多了。
用Arrays类sort()对数组元素进行降序排列:import java.util.Arrays
class SortDemo
{
public static void main(String[] args)
{
int[] vec={0,15,-14,45,20,70}
Arrays.sort(vec)
System.out.println("/n")
System.out.println("降序排列:")
for (int i=vec.length-1i>=0 i-- )
{
System.out.print(vec[i]+" ")
}
}
}