java数组sort()方法降序怎么排?

Python015

java数组sort()方法降序怎么排?,第1张

java数组sort()方法降序方式:

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

}

}

}

1.java.util.Collections.sort(List list)与Comparable,Comparator 接口

2.java.util.Arrays.sort(T[])与Comparable,Comparator 接口

3.JFace中 TableView ,TreeView, ListView的排序,实现ViewerSorter

两者的实现类似,不同的是针对的对象不一样。Collections.sort()针对的是List,Arrays.sort()针对的是数组。如果List中或者数组中存的都是基本数据类型(byte、short、int、long、float、double、char、boolean) 和 String,那么我们直接使用即可。如果其中存的数据是对象,那么有两种方法,一是每个对象实现Comparable接口,二是使用Collections.sort(List list,Comparator c)或者Arrays.sort(T[],Comparator c),临时实现一个Comparator 来实现排序。

最后是一个以TableView 为例。

TableViewer tableViewer = new TableViewer(detailGroup, SWT.BORDER | SWT.V_SCROLL

| SWT.H_SCROLL | SWT.FULL_SELECTION)

tableViewer.setSorter(new FolderSorter())

public class FolderSorter extends ViewerSorter {

。。。。。。

}

Arrays.sort()

先来看看Arrays.sort(),一点进这个方法会看到是这样子的

public static void sort(int[] a) {

    DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0)

}123

果然没这么简单,DualPivotQuicksort翻译过来就是双轴快速排序,关于双轴排序可以去这里http://www.cnblogs.com/nullzx/p/5880191.html 看看。那再次点进去,可以发现有这么一段代码

if (right - left < QUICKSORT_THRESHOLD) {

    sort(a, left, right, true)

    return

}1234

可以发现如果数组的长度小于QUICKSORT_THRESHOLD的话就会使用这个双轴快速排序,而这个值是286。

那如果大于286呢,它就会坚持数组的连续升序和连续降序性好不好,如果好的话就用归并排序,不好的话就用快速排序,看下面这段注释就可以看出

 * The array is not highly structured,

 * use Quicksort instead of merge sort.

123

那现在再回到上面的决定用双轴快速排序的方法上,再点进去,发现又会多一条判断

// Use insertion sort on tiny arrays

if (length < INSERTION_SORT_THRESHOLD)

123

即如果数组长度小于INSERTION_SORT_THRESHOLD(值为47)的话,那么就会用插入排序了,不然再用双轴快速排序。

所以总结一下Arrays.sort()方法,如果数组长度大于等于286且连续性好的话,就用归并排序,如果大于等于286且连续性不好的话就用双轴快速排序。如果长度小于286且大于等于47的话就用双轴快速排序,如果长度小于47的话就用插入排序。真是有够绕的~