排序算法的实验

    技术2022-05-20  44

    3年半前,我做了排序算法的实验,对比的算法有如下:

      1)heapsort 堆排序

      2)mergeSort归并排序

      3)quickSort快速排序

      4)lib sort 库中的排序方法,改进的快速排序

     

    采用的数据是int数值,记录时间为秒

     

    记录如下:

     

      1)对于数据量很小的时候(100个元素时)

             heapsort : 0.000020        mergeSort : 0.000198          quickSort : 0.000065                lib sort: 0.000057

           可以看出堆排序性能最好,归并排序性能最差。

           大约200个元素的时候快速排序和堆排序性能差不多,为最好。

           大约500个元素的时候堆排序跟归并排序快,但还是慢于快速排序

           数据量越来越大的时候,堆排序的性能就差下来

     

           分析可能原因:

                 由于cpu cache的原因,小数据量的时候一般都在cache中,所以小数据量对于堆的性能是非常高的;

           数据量越大,这种情况就发生变化了,大部分数据都不是在cache中,由于访问堆不是顺序访问数值元素的,

           存在从树根到树叶的跨越或者倒过来,这样容易导致cache不命中。

     

     

      2)数据量为2000万

     

          heapsort2:15       mergeSort:6       quickSort:4       lib sort:3


    最新回复(0)