java排序算法

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

 

你可能感兴趣的:(java,排序)