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()支持自己选择比较器