Sorting 理解Groovy中的排序算法
当我们使用sort时,为什么数组中的第二项是第一个元素。 看看这个例子,有什么我不明白的吗Sorting 理解Groovy中的排序算法,sorting,groovy,closures,Sorting,Groovy,Closures,当我们使用sort时,为什么数组中的第二项是第一个元素。 看看这个例子,有什么我不明白的吗 def array = [4,2,7] def listSorter = {a,b -> println "a: " + a; println "b: " + b; a <=>b; } array = array.sort(listSorter); println array; 当您要求Groovy对项目进行排序时,它不会按顺序进行处理。G
def array = [4,2,7]
def listSorter = {a,b ->
println "a: " + a;
println "b: " + b;
a <=>b;
}
array = array.sort(listSorter);
println array;
当您要求Groovy对项目进行排序时,它不会按顺序进行处理。Groovy在封面下使用集合排序。这可以通过多种方式进行排序。传统的方法是合并排序。例如,如果您使用的是Java 8,它将根据您是否启用了旧版合并排序数组.LegacyMergeSort.userRequested来执行TimSort。与基本的冒泡排序相比,该算法不只是按顺序遍历列表并比较每个项目。这就是为什么当您将打印放入比较器时,所比较的内容似乎是随机的-这只是一种优化,以使排序更快。参数的顺序无关紧要,不是吗?这是一个实现细节是的,这是真的,我想我正在试图理解这里的排序机制是什么。如何分类?。为什么a,b->a b在进行asc排序,而a,b->b a在进行desc排序?我假设a b等于a>b?返回1:a
a: 2
b: 4
a: 7
b: 2
a: 7
b: 4
[2, 4, 7]