ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:54KB ,
资源ID:13085004      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13085004.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验4报告Word文档格式.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验4报告Word文档格式.doc

1、2 能够对排序算法进行基本的复杂度分析。二、 实验内容排序就是把一组元素按照某个域的值的递增或递减的次序重新排列的过程。快速排序在待排序记录序列中任取一个记录作为枢轴,以它作为比较的“基准”,将待排序划分为左右两个子序列,使行左边子序列中记录的关键字均小于等于枢轴,右边子序列中各记录的关键字都大于等于枢轴。对所划分的两组分别重复上述过程,直到各个序列的记录个数为1时为止。快速排序函数原型QuickSort(SeqList sq)。设计一个算法,在顺序表存储结构上实现快速排序。排序数据为学生的考试成绩单。成绩单由学生的学号、姓名和成绩组成,设计一个程序对给定的n个学生的成绩单按照名次列打印出每个

2、学生的名次、学号、姓名和成绩。三、实验步骤1输入待排序的记录2. 对自定义记录类型重载比较运算符3 排序1)并选择第一个记录作为pivotkey记录2)从high指向的记录开始,向前找到第一个关键字的值小于Pivotkey的记录,将其放到low指向的位置,low+13).从low指向的记录开始,向后找到第一个关键字的值大于Pivotkey的记录,将其放到high指向的位置,high-14)重复2),3),直到low=high,将枢轴记录放在low(high)指向的位置 5)重复2),3),4),直到整个记录有序为止6) 输出排序记录,完成比较。4. 附加要求:不采用运算法重载的方式,而是定义c

3、ompare函数指针,通过传给quicksort函数指针,完成排序。四、实验提示算法实现:成功代码:在存储结构中添加一个CRecord * temp;原来暂存指针移动位置时所指内容,在快速排序函数中利用中间的存储结构list.temp0,实现两个指针的位置改变后所指内容的变化。#includemalloc.hstdio.husing namespace std;#define MaxSize 100 /定义顺序表的最大长度typedef int DataType;/定义模板为整型数据class CRecord /定义一个记录类,用来存放每一个学生信息中包含的数据public:int num;c

4、har name10;int grade;class SeqList /定义一个表格类,存放记录类中的信息,顺序表的长度和一个中间存储单位tempCRecord * data; CRecord * temp;int length;/创建顺序表void SLCreat(SeqList &sq) sq.length = 0; /初始化顺序表长度为0cout sq.length; /输入顺序表长度sq.data= new CRecordsq.length;/开辟data空间sq.temp= new CRecordsq.length;/开辟temp空间请输入数据元素值: endl; cout 学号 姓

5、名 成绩:for(int i = 0; i sq.datai.numsq .datai.namesq. datai.grade;/一次快速排序int partition(SeqList &list, int i, int j) DataType pivotkey;/定义关键字 list.temp0=list.datai;/把list.datai中的数据再存到list.temp0,供交换后使用pivotkey = list.datai.grade;/选择第一个记录作为pivotkey记录,初始化pivotkey为list.datai.grade的成绩while(i j)while(i = piv

6、otkey) /当j(顺序表中后者)中成绩大于等于pivotkey时-j;/j值减少1取向向前的数据list.datai = list.dataj;/将比枢轴记录小的记录交换到低位,把i中数据放到j指向的位置,即j-1list.datai.grade = pivotkey) /当i(顺序表中后者)中成绩小于等于pivotkey时+i;/i值加1取向向后的数据list.dataj = list.datai;/将比枢轴记录大的记录交换到高位,把j中数据放到i指向的位置,即i-1list.datai=list.temp0;/完成交换 return i;/快速排序,实现顺序表的完整排序void Qui

7、ckSort(SeqList & sq, int low, int high)int pos;if(low =0)n+;cout n sq.datai.num sq .datai.namesq. datai.grade cout endl; i-;/主函数void main( )SeqList myList;SLCreat(myList);Sort(myList ); SLPrint(myList );程序分析:(1) 整个程序实现过程,首先是需要定义两个结构体CRecord和SeqList用于定义学生信息和顺序表中信息结构。然后需要创建顺序表输入学生信息包括学生学号,姓名和成绩。接着定义一个

8、快速排序函数 partition实现每交换一对记录时所需操作。再定义QuickSort函数实现完整的快速排序过程,Sort函数设置好low和high指针指向,SLPrint函数实现快速排序后显示的结果。在main函数中,首先定义创建一顺序表myList输入信息,再调用函数实现快速排序后结果。(2)在partition函数中,先将枢轴记录暂存在list.temp0位置上,排序过程中只对list.datai 和list.dataj 的单向移动,直到一趟排序结束后再将枢轴记录移至正确位置上。运行结果:实验心得:此次实验是关于快速排序算法的实现。实验过程中,通过老师所给的代码再加上自己的修改基本掌握了快速排序。实验过程中,虽然遇到了很多困难但是经过自己的修改和老师的帮助完成了实验,希望在接下来的学习中再接再厉更好地掌握数据结构算法设计。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1