问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法
实验要求:
A. 在随机产生的空间大小分别N = 10, 1000,10000,100000
的排序样本上测试以上算法。
B. 结果输出:
(1) N=10时,排序结果。
(2) N=1000,10000,100000时,每个排序用不同的样本多试验几次(最低5次)得出平均时间,比较不同排序算法所用的平均时间。
实验报告要点:总结对各种排序的性能分析。
注:由于对这个感兴趣,所以实现了书上的9个排序算法,以下是每一个排序算法的运行结果,后面并有每一个程序的整合版。
输入10个数据每一个排序的结果。
1.Countsort计数排序
2.Bucketsort桶排序
3.Heapsert堆排序
4.Quicksort快速排序
5.Mergesort 归并排序
6.Shellsort 希尔排序
7.Bubblesortv1 冒泡排序从前向后相邻元素比较
8.Bubblesortv2冒泡排序从后向前排序
9.Insertsort 简单插入排序
以下是整合后的排序算法,并附有小的界面选择程序
截图如下:
以下是编写一个测试程序对9种排序输入1000,10000,100000个数据(数据随机产生在0到99之间)的测试时间结果,
总共测试了5次,并求平均值测试结果如下:
1000个数据时:
10000个数据时:
输入100000个数据时:
冒泡法:
这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(1)。
直接插入排序:O(n*n)
快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最高好的,大多数情况下总是最好的。
归并排序:log2(n)*n
堆排序: log2(n)*n
希尔排序:算法的复杂度为n的1.2次幂
计数排序:时间复杂度O(n),它是以空间损耗为代价
桶排序: 桶排序的平均时间复杂度为线性的O(N+C),其中C=N*(logN-logM)。如果相对于同样的N,桶数量M越大,其效率越高,最好的时间复杂度达到O(N)。当然桶排序的空间复杂度为O(N+M),如果输入数据非常庞大,而桶的数量也非常多,则空间代价无疑是昂贵的。
注:代码上传在http://download.csdn.net/detail/liuyongvs2009/7077279