算法分析与设计——冒泡排序,选择排序,STL自带sort函数性能比较实验

发布时间 2023-03-25 13:22:04作者: yuooo

实验环境:
Win11,Dev c++5.11
实验方法:
生成不同数据量的随机数后使用三种排序方法,比较每种方法所耗时长。
实验结果:
数据量为1000时,冒泡排序平均用时为0.015s,选择排序平均用时为0.01s,STL自带sort函数平均用时显示为0s(过快无法测出)。
数据量为10000时,冒泡排序平均用时为0.155s,选择排序平均用时为0.103s,STL自带sort函数平均用时为0.009s。
数据量为100000时,冒泡排序平均用时为22.488s,选择排序平均用时为14.3532s,STL自带sort函数平均用时为0.015s。
结果解释:
从算法的时间复杂度上看,冒泡排序为O(n^2),选择排序为O(n^2),STL自带sort函数为O(nlogn),因而sort函数的排序性能明显优于前两种排序方法。
从原理上看,选择排序在每一次的遍历中只会有一次交换操作,而冒泡排序中可能存在多次交换操作,因而选择排序在大型数据集中的性能更好。
其他:
sort并不是简单的快速排序,它对快速排序进行了优化。此外,它还结合了插入排序和推排序。系统会根据数据形式和数据量自动选择合适的排序方法。它每次排序中不只选择一种方法,比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的太深,他会选择推排序。