我看看几篇排序的算法的文章,大家都说效率一般都是:快速排序>归并排序>希尔排序然后就用java自己动手测了一下,测试结果却是:希尔排序>归并排序>快速排序而且当数据量过大时,归并排序 和 快速排序 会出现栈溢出. 以下是我写的源代码,请帮我分析一下是什么原因? package com.test;
import java.util.Arrays;
import java.util.Random;
public class Sort {
public static void main(String[] args) {
int[] arr = new int[400000];
Random r = new Random();
long start, end;
init(arr, r);
System.out.print("希尔排序...");
start = System.currentTimeMillis();
sort1(arr);
end = System.currentTimeMillis();
System.out.println("完成" + (end - start));
//System.out.println(Arrays.toString(arr));
init(arr, r);
System.out.print("归并排序...");
start = System.currentTimeMillis();
arr = sort2(arr, 0, arr.length - 1);
end = System.currentTimeMillis();
System.out.println("完成" + (end - start));
//System.out.println(Arrays.toString(arr));
init(arr, r);
System.out.print("快速排序...");
start = System.currentTimeMillis();
sort3(arr, 0, arr.length - 1);
end = System.currentTimeMillis();
System.out.println("完成" + (end - start));
//System.out.println(Arrays.toString(arr));
}
/**
* 初始化
*/
private static void init(int[] arr, Random r) {
System.out.print("\n初始化...");
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(100);
}
//System.out.println("\n" + Arrays.toString(arr));
} 运行结果如下: 初始化...希尔排序...完成40初始化...归并排序...完成53初始化...快速排序...完成1411
添加回答
举报
0/150
提交
取消