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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验6排序2Word文件下载.docx

1、 char name10; /姓名 int english; /成绩 int math;class SqHashpublic: ElemType *ht,*z; /表数组 int length; int couts; /表大小(长度) /KeyType p; / 除留余数法的大质数 SqHash( int n1,int p1); SqHash() delete ht; length=0; ; void creat_hash(); /int find( KeyType k ); int sort1(); /void creat_hash(); void PrintOut();SqHash:SqH

2、ash(int n1,int p1) int p; length=n1; p=p1; ht=new ElemTypelength; for(int i=0;ilength;i+) hti.key=-1;void SqHash:creat_hash() int i,K,en,ma; i=0; char na10; coutK; couts=0; while(K!=-1&length) /coutnaenma; hti.key=K; /strcpy(hti.name,na); /用串拷贝赋值 /hti.english=en; /hti.math=ma; /插入学生记录Kn 插入成功! ; i+;

3、couts+;/查询某关键字的记录int SqHash: sort1() int i,j,k=1;int ll1; /元素从1开始存储,couts表示数组中含有元素个数,此处即为最后一个元素的下标 for(i=2;=couts; if(hti.keyhti-1.key) ll1=ht0.key; ht0=hti; /设置监视哨 for(k;k=1;k+2) ht0.key=ll1; for(j=i-1;ht0.keyhtj.key;j-) htj+1.key=htj.key; htj+1.key=ht0.key; if(i!=0) return 1; else return 0;PrintOu

4、t() int i,j; for (i=0;couts+10; i+) if(hti.key!=-1)n i= 学号:hti.key; / 姓名:hti.name 英语成绩:hti.english 高数成绩:hti.math;int main() int p0,n0;n 请输入n值(n值应是记录总数的1.3-1.5倍)n0;n 请输入P值(应是不大于n 的大质数):p0; SqHash ha(n0,p0); ElemType a; int k; do nnnn 1. 建立表 n 2. 对学生记录排序n 3. 输出表n 4. 结束n=n 输入您的选择(1,2,3,4):k; switch(k)

5、case 1: ha.creat_hash(); break; case 2:n 排序学生数据: int i=ha.sort1(); if(i=-1) n排序不成功endl ;cout=1&=3);3. 实验结果1.运行与建表2. 输出表(排序前)3. 排序4. 输出表(排序后)5. 结束4. 实验总结Shell排序(ShellSort)Shell排序通过将数据分成不同的组,先对每一组进行排序,然后再对所有的元素进行一次插入排序,以减少数据交换和移动的次数。平均效率是O(nlogn)。其中分组的合理性会对算法产生重要的影响。现在多用D.E.Knuth的分组方法。Shell排序比冒泡排序快5倍,

6、比插入排序大致快2倍。Shell排序比起QuickSort,MergeSort,HeapSort慢很多。但是它相对比较简单,它适合于数据量在5000以下并且速度并不是特别重要的场合。它对于数据量较小的数列重复排序是非常好的。Shell排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小,插入排序对于有序的序列效率很高。所以,希尔排序的时间复杂度会比o(n2)好一些。由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其

7、稳定性就会被打乱,所以shell排序是不稳定的。快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成:(1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4) 对两边利用递归排序数列。快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。 快速排序有两个方向,左边的i下标一直往右走,而右边的j下标一直往左走,比如序列为 5 3 3 4 3 8 9 10 11, 现在中枢元素5和3(第5个元素,下标从1开始计)交换就会把元素3的稳定性打乱,所以快速排序是一个不稳定的排序算法。

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

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