- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告
实验名称: 实验三——排序
学生姓名: XXX
班 级: xxxxxxxxxxx
班内序号:
学 号:
日 期: 2018年6月3日
实验要求
实验目的:通过选择下面两个题目之一,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况。
实验内容:使用链表实现下面各种排序算法,并进行比较。
排序算法:
1、插入排序
2、冒泡排序
3、快速排序
4、简单选择排序
5、其他
要求:
1、测试数据分成三类:正序、逆序、随机数据
2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。
3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作)
4、对2和3的结果进行分析,验证上述各种算法的时间复杂度
编写测试main()函数测试线性表的正确性。
2. 程序分析
2.1 存储结构
单链表,储存每个元素值同时,储存该元素的直接后继元素位置信息。即数据域(data),指针域(next)。 struct Node
{
int data;
struct Node *next;
};
2.2 关键算法分析
链表的建立:
Linklist::Linklist (int a[],int n)
{
front = new Node;
Node *r = front ;
for(int i=0;in;i++) //尾插法初始化链表
{
Node *s = new Node;
s-data = a[i];
r-next = s;
r=s;
}
r-next = NULL;
}
尾插法创建链表:①堆中建立新节点②将a[i]写入新节点data域③新节点加入链表r-next=s.④修改尾指针r=s.
简单选择排序:
void Linklist ::Link_Selectsort (int n)
{
Node *p=front-next ;
int a=0,b=0; //a记载比较次数,b记载移动次数
while(p!=NULL)
{
Node *s =p; //s指向最小节点
Node *q=p-next ;
while(q!=NULL)
{
if(q-datas-data) s=q;
a++;
q=q-next ;
}
if(p!=s)
{
int t=p-data ;p-data =s-data ;s-data =t; //交换节点值
b=b+3;
}
p=p-next ;
}
Print(n,a,b);
}
建立p节点记载有序区最后节点的下一个节点,s节点则记载无序区的最小节点,q节点用于遍历链表无序区,找出最小值。每次循环中q都找到无序最小节点,用s指向该节点,后p和s节点值交换。
时间复杂度为O(n^2)
直接插入排序:
void Linklist ::Link_Insertsort(int n)
{
Node *p=front;
Node *q=front-next ; //q为无序区第一个节点的前驱
int a=0,b=0; //a记录比较次数,b记录移动次数
while(p-next !=NULL)
{
p=front; //初始化p为有序区的第一个前驱
while(q-next !=NULLp!=q)
{
a++;
if(p-next -dataq-next -data ) //比较,交换节点顺序
{
Node *s=q-next ;
q-next =s-next ; //摘除s节点
s-next =p-next ; //插到p节点之后
p-next =s;
b=b+3;
break;
}
p=p-next ;
}
if(p==q) q=q-next ; //若本躺排序无节点交换,则q点下移
p=q; //当q到链尾时,用于结束循环
}
Print(n,a,b);
}
指针p指向有序区的待比较节点前驱(初始化时即front节点)②指针q指向无序区第一个元素的前驱Ⅰ:若无序区的第一个节点值较大,则p下移
您可能关注的文档
- 《做诚信人》-综合1501主题班会课件.ppt
- 【201506】六下语文复习总结第四单元.ppt
- 《自然特征和农业》精品课件(第2课时).ppt
- 【北师大版】八年级历史下册期末三套考试试卷(附答案).doc
- 【步步高】2015年高考数学(苏教版-理)一轮题库:选修4-第2讲-矩阵和变换.doc
- 【答案版】2018年普通高等学校招生全国统一考试理科综合(北京卷).docx
- 《自然特征和农业》精品课件(第1课时).ppt
- 【点拨】2017年中考历史课件(河北版):第5讲-人民解放战争课件.ppt
- 【高考总复习总结必备】2013年高考数学闯关密练特训10-2用样本估计总体新人教A版(含解析).doc
- 【湖南中考面对面】2015新课标版中考数学教材知识梳理第13课时+二次函数图象与性质(共36张课件).ppt
文档评论(0)