9种排序算法的实现

来源:互联网 发布:蓝桥杯c语言试题2017 编辑:程序博客网 时间:2024/06/05 04:35

问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法

实验要求:

            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

0 0