快速排序 归并排序 Collections.sort正序倒序乱序性能分析

一、快速排序:

1:快速排序性能测试,随机数10000个打乱排序乱序、正序、倒序写法如下

public class QuickSort {

    //第一步
    public static void main(String[] args) {
        List list = new ArrayList<>();
        for(int i=0;i<10000;i++) {
            list.add(new Random().nextInt(90000));
        }
        Object[] objects = list.toArray();
        int[] arr = new int[objects.length];
        for(int i = 0; i

2:运行效果如下所示:

快速排序 归并排序 Collections.sort正序倒序乱序性能分析_第1张图片

 

二、归并排序:

1:归并排序性能测试,随机数10000个打乱排序乱序、正序、倒序写法如下

public class MergerSort {

    public static void main(String[] args) {
        List list = new ArrayList<>();
        for(int i=0;i<10000;i++) {
            list.add(new Random().nextInt(1000000));
        }
        Object[] objects = list.toArray();
        int[] arr = new int[objects.length];
        for(int i = 0; i

2:运行效果如下所示:快速排序 归并排序 Collections.sort正序倒序乱序性能分析_第2张图片

三、Collections.sort排序:

1:Collections.sort排序性能测试,随机数10000个打乱排序乱序、正序、倒序写法如下

public class CollectionSort {

    public static void main(String[] args) {
        List list = new ArrayList<>();
        for(int i=0;i<10000;i++) {
            list.add(new Random().nextInt(90000));
        }
        Object[] objects = list.toArray();
        int[] arr = new int[objects.length];
        for(int i = 0; i

2:运行效果如下所示:快速排序 归并排序 Collections.sort正序倒序乱序性能分析_第3张图片

 

四、速度对比:经过多次运行,结果比例均大至稳定(本文只截取某一次结果进行讲解)

  乱序 正序 倒序
快速排序 2ms 29ms 24ms
归并排序 7ms 5ms 1ms
CollectionSort 14ms 1ms 1ms

 

 

 

 

 

五、实验过程中遇到的问题,快速排序一定是最快的么?不一定,乱序时候比较快,其他时候就比较慢了,而且快排极不稳定,在递归调用太深的情况下它会报溢出的错误。感兴趣可以把10000变大一些。Collections.sort中采用的核心算法是TimSort.sort

快速排序 归并排序 Collections.sort正序倒序乱序性能分析_第4张图片

它是增强型的归并排序法,性能对比归并要强大一些。保证此排序是稳定的(不会因调用 sort 方法而对相等的元素进行重新排序。这一点快排就满足不了。)

你可能感兴趣的:(其他算法,java,归并,快排,CollectionsSort)