}
算法的时间复杂度是什么?
算法的空间复杂度是什么?
为什么?
插入排序:
稳定,时间复杂度O(n^2)O(n2)
选择排序:
不稳定,时间复杂度O(n^2)O(n2)
冒泡排序:
稳定,时间复杂度O(n^2)O(n2)
希尔排序:
不稳定,时间复杂度平均时间O(nlogn)最差时间O(n^s)1
快速排序:
不稳定,时间复杂度最理想O(nlogn)最差时间O(n^2)O(Nlogn)
堆排序:
不稳定,时间复杂度O(nlogn)O(Nlogn)
五、程序调试及测试结果
主要包括:
选择长度为20的随机数,六种方法排序的结果。
从比较次数和移动次数可大致看出各排序方法的效率高低,后三种明显优于前三种
六、结论
主要包括:
随机数产生方法:
srand(time(0))就是给这个算法一个启动种子,也就是算法的随机种子数,有这个数以后才可以产生随机数,用1970.1.1至今的秒数,初始化随机数种子。
Srand是种下随机种子数,你每回种下的种子不一样,用Rand得到的随机数就不一样。
为了每回种下一个不一样的种子,所以就选用Time(0),Time(0)是得到当前时时间值(因为每时每刻时间是不一样的了)。
进行函数的参数传递时,如果传入一个地址,比传入一个struct效率要高,因为少了一个拷贝过程。
待改进的地方:
很多步骤有重复用到,如把数组b赋值给a,定义Ccnt,Rcnt等,可以做个初始化的函数调用,省去重复的代码。
可以增加其他排序方法进行效率比较。
七、参考文献
[1]唐国民,王国钧.数据结构[M].北京:
清华大学出版社,2013:
213-238
[2]张乃孝.算法与数据结构——C语言描述[M].北京:
高等教育出版社,2002
[3]唐国民,王智群.C语言程序设计[M].北京:
清华大学出版社,2009:
107-115
[4]唐国民,王国钧.数据结构实验教程[M].北京:
清华大学出版社,2013:
195-207
说明:
标为M的是书籍
标为D的为学位论文
标为J的为期刊
标为C的为会议论文