欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构排序实验报告.pdf

    • 资源ID:43636761       资源大小:341.52KB        全文页数:10页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构排序实验报告.pdf

    数据结构课程设计报告数据结构课程设计报告实验五实验五 排序排序一、需求分析:一、需求分析:本演示程序用本演示程序用 C+6.0C+6.0 编写,完成各种排序的实现,对输入的一组数字实现不同的排序编写,完成各种排序的实现,对输入的一组数字实现不同的排序方法,对其由小到大顺序输出。方法,对其由小到大顺序输出。1 1分别对直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序算法分别对直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序算法进行编写。进行编写。2 2、对存储的函数即输入的数字进行遍历。、对存储的函数即输入的数字进行遍历。3 3、初始化函数对输入的数字进行保存。、初始化函数对输入的数字进行保存。4 4、主函数实现使用者操作界面的编写,对输入、选择、保存、输出的各种实现。、主函数实现使用者操作界面的编写,对输入、选择、保存、输出的各种实现。这当中还包括了各个函数的调用的实现。这当中还包括了各个函数的调用的实现。5 5、程序所能到达的功能:完成对输入的数字的生成,并通过对各排序的选择实现、程序所能到达的功能:完成对输入的数字的生成,并通过对各排序的选择实现1数字从小到大的输出。数字从小到大的输出。二、程序主要功能以及基本要求:二、程序主要功能以及基本要求:1 1、设计一个菜单,格式如下:、设计一个菜单,格式如下:1 1、直接插入排序、直接插入排序2 2、希尔排序、希尔排序3 3、冒泡排序、冒泡排序4 4、快速排序、快速排序5 5、选择排序、选择排序6 6、堆排序、堆排序7 7、退出、退出2 2、选择不同的菜单但进行相应的排序,并给出排序的关键字序列。、选择不同的菜单但进行相应的排序,并给出排序的关键字序列。三、系统框架图:三、系统框架图:本程序包含了本程序包含了 9 9 个函数,它们分别是:个函数,它们分别是:1 1、直接插入排序的算法函数、直接插入排序的算法函数 InsertSortInsertSort。2 2、希尔排序的算法函数、希尔排序的算法函数 ShellSortShellSort。3 3、冒泡排序算法函数、冒泡排序算法函数 BubbleSortBubbleSort。4 4、快速排序的算法函数、快速排序的算法函数 PartitionPartition。5 5、选择排序算法函数、选择排序算法函数 SelectSortSelectSort。6 6、堆排序算法函数、堆排序算法函数 HeapAdjustHeapAdjust。7 7、对存储数字的遍历函数、对存储数字的遍历函数 VisitVisit。8 8、初始化函数、初始化函数 InitSqListInitSqList。9 9、主函数、主函数 mainmain。主函数主函数各各个个排排序序算算法法函函数数对对入入数数进进遍遍初初化化输输的的组组行行历历始始操操作作界界面面的的设设计,计,函函数数的的调用。调用。四、详细设计四、详细设计实现各个算法的主要内容,下面是各个函数的主要信息:实现各个算法的主要内容,下面是各个函数的主要信息:1 1各个排序函数的算法:各个排序函数的算法:2一、直接插入排序一、直接插入排序void InsertSort(SqList&L)void InsertSort(SqList&L)int i,j;int i,j;for(i=2;i=L.length;i+)for(i=2;i=L.length;i+)if(L.ri.key L.ri-1.key)if(L.ri.key L.ri-1.key)L.r0=L.ri;L.r0=L.ri;L.ri=L.ri-1;L.ri=L.ri-1;for(j=i-2;(L.r0.key L.rj.key);j-)for(j=i-2;(L.r0.key L.rj.key);j-)L.rj+1=L.rj;L.rj+1=L.rj;L.rj+1=L.r0;L.rj+1=L.r0;二、希尔排序二、希尔排序void ShellSort(SqList&L)void ShellSort(SqList&L)int i,j;int i,j;int dk=1;/int dk=1;/增量增量while(dk=L.length/3)while(dk 0)while(dk0)dk/=3;/dk/=3;/减小增量减小增量for(i=dk;i=L.length;i+)for(i=dk;i=dk)&(L.rj-dk.key L.r0.key)while(j=dk)&(L.rj-dk.key L.r0.key)L.rj.key=L.rj-dk.key;L.rj.key=L.rj-dk.key;j-=dk;j-=dk;L.rj.key=L.r0.key;L.rj.key=L.r0.key;三、冒泡排序三、冒泡排序void BubbleSort(SqList&L)void BubbleSort(SqList&L)int i,j;int i,j;for(i=0;iL.length-2;i+)for(i=0;iL.length-2;i+)int flag=1;int flag=1;for(j=0;jL.length-i-2;j+)for(j=0;j L.rj+1.key)if(L.rj.key L.rj+1.key)flag=0;flag=0;int temp;int temp;temp=L.rj.key;temp=L.rj.key;L.rj.key=L.rj+1.key;L.rj.key=L.rj+1.key;L.rj+1.key=temp;L.rj+1.key=temp;/假设无交换说明已经有序假设无交换说明已经有序if(flag=1)if(flag=1)break;break;4 四、快速排序四、快速排序int Partition(SqList&L,int low,int high)int Partition(SqList&L,int low,int high)/分割区域函数分割区域函数L.r0=L.rlow;L.r0=L.rlow;int pivotkey=L.rlow.key;/int pivotkey=L.rlow.key;/一般将顺序表第一个元素作为支点一般将顺序表第一个元素作为支点while(low high)while(low high)while(low=pivotkey)while(low=pivotkey)high-;high-;L.rlow=L.rhigh;L.rlow=L.rhigh;while(lowhigh&L.rlow.key=pivotkey)while(lowhigh&L.rlow.key=pivotkey)low+;low+;L.rhigh=L.rlow;L.rhigh=L.rlow;L.rlow=L.r0;/L.rlow=L.r0;/返回枢轴位置返回枢轴位置return low;return low;void QSort(SqList&L,int low,int high)void QSort(SqList&L,int low,int high)/每张子表的快速排序每张子表的快速排序if(lowhigh)if(lowhigh)int pivotloc=Partition(L,low,high);int pivotloc=Partition(L,low,high);QSort(L,low,pivotloc-1);QSort(L,low,pivotloc-1);QSort(L,pivotloc+1,high);QSort(L,pivotloc+1,high);void QuickSort(SqList&L)void QuickSort(SqList&L)5 QSort(L,1,L.length);QSort(L,1,L.length);五、简单项选择择排序五、简单项选择择排序void SelectSort(SqList&L)void SelectSort(SqList&L)int min;int min;int j;int j;for(int i=0;i L.length;i+)for(int i=0;i L.length;i+)/选择第选择第 i i 小的记录,并交换小的记录,并交换j=i;j=i;min=L.ri.key;min=L.ri.key;for(int k=i;k L.length;k+)for(int k=i;k L.length;k+)/在在 Ri.n-1Ri.n-1中选择最小的记录中选择最小的记录if(L.rk.key min)if(L.rk.key min)min=L.rk.key;min=L.rk.key;j=k;j=k;if(i!=j)if(i!=j)/与第与第 i i 个记录交换个记录交换int temp=L.ri.key;int temp=L.ri.key;L.ri.key=L.rj.key;L.ri.key=L.rj.key;L.rj.key=temp;L.rj.key=temp;六、堆排序六、堆排序void HeapAdjust(HeapType&H,int s,int m)void HeapAdjust(HeapType&H,int s,int m)6/堆调整,将记录调整为小顶堆堆调整,将记录调整为小顶堆int j;int j;RedType rc=H.rs;/RedType rc=H.rs;/暂时存储根结点暂时存储根结点for(j=2*s;j=m;j*=2)for(j=2*s;j=m;j*=2)/沿着结点记录较小的向下筛选沿着结点记录较小的向下筛选if(jm&H.rj.keyH.rj+1.key)if(jm&H.rj.key=H.rj.key)if(rc.key=H.rj.key)break;break;H.rs=H.rj;H.rs=H.rj;s=j;s=j;H.rs=rc;H.rs=rc;void HeapSort(HeapType&H)void HeapSort(HeapType&H)int i;int i;RedType temp;RedType temp;for(i=H.length;i0;-i)for(i=H.length;i0;-i)HeapAdjust(H,i,H.length);HeapAdjust(H,i,H.length);for(i=H.length;i1;-i)for(i=H.length;i1;-i)temp=H.r1;temp=H.r1;H.r1=H.ri;H.r1=H.ri;H.ri=temp;H.ri=temp;HeapAdjust(H,1,i-1);HeapAdjust(H,1,i-1);7 2 2遍历函数与初始化遍历函数与初始化void Visit(SqList L)void Visit(SqList L)for(int i=1;i=L.length;i+)for(int i=1;i=L.length;i+)coutL.ri.key;coutL.ri.key;coutendl;coutendl;void InitSqList(SqList&L,int a)void InitSqList(SqList&L,int a)for(int i=1;i=L.length;i+)for(int i=1;i=L.length;i+)L.ri.key=ai;L.ri.key=ai;五、测试结果五、测试结果以下是各种界面的测试结果:以下是各种界面的测试结果:1 1输入的界面输入的界面:2 2排排序序操操作作界界面面:83 3各种排序的结果:各种排序的结果:六、设计不足以及存在问题六、设计不足以及存在问题本程序是基于本程序是基于 C+6.0C+6.0 的实现,其实在设计上的改良可以利用类进行操作,这种类的改的实现,其实在设计上的改良可以利用类进行操作,这种类的改9良了存储上的不足还可以实现了,对各种的函数基于类的实现,这就是对本程序的改良,良了存储上的不足还可以实现了,对各种的函数基于类的实现,这就是对本程序的改良,这是十分重要的与是改良的基础。这是十分重要的与是改良的基础。本程序出现过的问题是主函数对个函数的调用以及对存储数组的调用上出现了问题,本程序出现过的问题是主函数对个函数的调用以及对存储数组的调用上出现了问题,导致排序的结果以及排序的界面出现了问题,的不到实现。后来对算法进行改良,最终把导致排序的结果以及排序的界面出现了问题,的不到实现。后来对算法进行改良,最终把问题得以解决。问题得以解决。10

    注意事项

    本文(数据结构排序实验报告.pdf)为本站会员(赵**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开