上期为大家介绍了快速排序(Quicksort),有很多同学会问:快排是不是比之前几种排序都要快?它到底有多快?,那就让我们一起来做个小实验测试一下吧!
一、实验设计
目前给大家介绍过了6种排序:冒泡排序、选择排序、
插入排序、希尔排序、归并排序、快速排序,并且在上期讲快速排续时给出了快排的优化方案:对于大数据集排序先使用快排,当分区达到一定小的时候使用插入排序,有同学就有疑惑:为什么当分区达到一定小时要用插入排序,这样真的会变快吗?
1.实验排序算法
冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序
2.数据集规模
随机生成一个数据集,数据个数从10,100,1000依次递增到10万个
3.比较方法
比较每个排序算法所用时长,多次测试,减少误差
4.数据特征
首先对随机数进行排序,看看哪个排序方法较快;然后再对“基本有序”的数据集排序,再比较这几种排序方法用时。
二、实验代码
使用randint随机生成整数
1.随机数排序
if __name__ == '__main__': # 生成n个0-10万的随机整型数据 n = 100000#n in [10, 100, 1000, 10000, 100000] arr = [randint(0, 100000) for i in range(n)] start1 = time.time() # 使用deepcopy是为了排除电脑或程序自动优化或使用缓存等因素 bubble_sort(deepcopy(arr)) print("冒泡排序耗时:" + str(time.time() - start1)) start2 = time.time() selection_sort(deepcopy(arr)) print("选择排序耗时:" + str(time.t