- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品学习资料
名师归纳总结——欢迎下载
下载可编辑XXXXXX高校《数据结构》课程设计报告.专业
下载可编辑
XXXXXX高校
《数据结构》课程设计报告
.专业 .整理 .
第 1 页,共 22 页
精品学习资料
名师归纳总结——欢迎下载
下载可编辑目录排序算法比较一,需求分析 二,程序的主要功能 三
下载可编辑
目
录
排序算法比较
一,需求分析 二,程序的主要功能 三,程序运行平台 四,数据结构 五,算法准时间复杂度 六,测试用例 七,程序源代码
二
感想体会与总结
.专业 .整理 .
第 2 页,共 22 页
精品学习资料
名师归纳总结——欢迎下载
下载可编辑排序算法比较一,需求分析利用随机函数产生N个随机整数( N = 500 ,1000, 1500,2000,2500,,30000 ),利用直接插入排序,折半插入排序,起泡排序,快速排序
下载可编辑
排序算法比较
一,需求分析
利用随机函数产生
N个随机整数( N = 500 ,1000, 1500,2000,
2500,
,30000 ),利用直接插入排序,折半插入排序,起泡排序,快速
排序,挑选排序,堆排序,基数排序七种排序方法(可添加其它排序方
法)进行排序(结果为由小到大的次序),并统计每一种排序所耗费的时 间(统计为图表坐标形式);
二,程序的主要功能
1. 用户输入任意个数,产生相应的随机数
2. 用户可以自己挑选排序方式(直接插入排序,折半插入排序,起泡 排序,快速排序,挑选排序,堆排序,基数排序)的一种
3. 程序给出原始数据,排序后从小到大的数据,并给出排序所用的时
间;
三,程序运行平台
版本
Visual C++ 6.0
四,数据结构
本程序的数据结构为线形表,线性次序表,线性链表;
; 1,结构体: typedef struct
{
指向线形表的第一个结点;
闲置,不同的算法
int
*r;
//r
r[0]
有不同的用处,如用作哨兵等;
次序表的总长度
int
length; //
}Sqlist;
2,空线性表
Status InitSqlist(Sqlist &L)
{
// 安排储备空间
L.r=(int *)malloc(MAXSIZE*sizeof(int));
if(.L.r)
{
储备安排失败! ");
printf("
exit(0);
.专业 .整理 .
第 3 页,共 22 页
精品学习资料
名师归纳总结——欢迎下载
下载可编辑} // 储备安排失败初始长度为L.length=0;//return OK;0}五,算法准时间复杂度(一)各个排序是算法思想:( 1)直接插入排序:将一个记录插入到已排好的有序表中,从而得到一个新的,记录数增加1 的有序表;( 2)折半插入排序:插入排序的基本插入是在一个有序表中进行查找和插入,这个查找可利用折半查找来实现,即为折半插入排序;( 3)起泡排序:第一将第一个记录的关键字和其次个记录的关键字进行 比较,如为逆序,
下载可编辑
} // 储备安排失败
初始长度为
L.length=0;//
return OK;
0
}
五,算法准时间复杂度
(一)各个排序是算法思想:
( 1)直接插入排序:将一个记录插入到已排好的有序表中,从而得到一
个新的,记录数增加
1 的有序表;
( 2)折半插入排序:插入排序的基本插入是在一个有序表中进行查找和
插入,这个查找可利用折半查找来实现,即为折半插入排序;
( 3)起泡排序:第一将第一个记录的关键字和其次个记录的关键字进行 比较,如为逆序,就将两个记录交换,然后比较其次个记录和第三个
记录的关键字;依此类推,直到第
N-1 和第 N个记录的关键字进行过
比较为止;上述为第一趟排序,其结果使得关键字的最大纪录被支配
到最终一个记录的位置上;然后进行其次趟起泡排序,对前
N-1 个记
录进行同样操作;一共要进行
N-1 趟起泡排序;
( 4)快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一
部分记录的关键字均比另一部分记录的关键字小,就可分别对这两部 分记录连续进行排序,已达到整个序列有序;
( 5)挑选排序:通过
N-I 次关键字间的比较,从
N-I+1 个记录中选出关
键字最小的记录,并和第
I ( 1<=I<=N)个记录交换;
( 6)堆排序:在堆排序的算法中先建一个大顶堆,既先选得一个关键字
作为最大的记录并与序列中最终一个记录交换,然后对序列中前 记录进行挑选,重新将它调整成一个大顶堆,如此反复直到排序结 束;
( 7)基数排序:按最低位优先法先对低位关键字进行排序,直到对最高 位关键字排序为止,经过如干次安排和收集来实现排序
(二)时间复杂度分析
N-1
排序算法
最差时间
时间复杂度
是否稳固?
2
2
插入排序
O(n )
O(n
文档评论(0)