ruby中数组的sort_by排序方法使用

Python08

ruby中数组的sort_by排序方法使用,第1张

数组

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]+" ")

}

}

}