Java中有两个对数组排序的静态算法,这里用了小例子测试了下效率
?
package algorithm; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Random; public class SortTest { public static void main(String[] args) { int[] arr = getArr(); testCollections(arr); testArrays(arr); } public static int[] getArr(){ int[] arr = new int[10000]; Random random = new Random(); for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(1000);// 随机生成0-999的数字 } return arr; } public static void testArrays(int[] arr) { long startTime = System.currentTimeMillis(); Arrays.sort(arr);// Arrays的排序方法 long endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); // for (int i = 0; i < arr.length; i++) { // System.out.print(arr[i] + "\t"); // if ((i + 1) % 10 == 0 && i != 0) { // System.out.println(); // } // } } public static void testCollections(int[] arr){ Integer arr1[] = new Integer[arr.length]; for(int i=0;i<arr.length;i++){ arr1[i] = arr[i]; } List list = Arrays.asList(arr1);//首先把数组转换为List long startTime = System.currentTimeMillis(); Collections.sort(list);//使用Collections排序算法:快速排序 long endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); // for(int i=0;i<list.size();i++){ // System.out.print(list.get(i)); // if ((i + 1) % 10 == 0 && i != 0) { // System.out.println(); // } // } } }
经过测试,发现Arrays.sort()方法要稍微快一些,但是Collections.sort()支持自己选择比较器
?