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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

东华理工大学数据结构课程设计文档格式.docx

1、基于交换类的排序有冒泡排序和快速排序。冒泡排序是比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.3基于选择类的排序概述选择排序的基

2、本思想是从每一趟待排序数据中选取一个关键字最小的记录,并置于适当的位置上。即第一趟从n个记录中选取关键字最小的记录,第二趟从剩下的n-1个记录中选取关键字最小的记录,直到整个序列的记录选完,由选取记录的顺序便可得到关键字有序的序列。堆排序的基本思想是通过类似于淘汰赛的想法,让序列中的关键字两两相比,不断淘汰较大者,最终选出关键字最小的记录。4、系统测试4.1基于线性表的查找源代码#includeprocess.h#define LIST_SIZE 100/定义顺序表的最大长度typedef int keyType ;/定义关键字类型为整形typedef struct keyType key ;

3、 /关键字项RecordType ;/记录类型 RecordType rLIST_SIZE+1; /r0用作监视哨 int length ; /定义顺序表长度RecordList ;/顺序表类型/*函数申明*/void CreatList(RecordList*L);int SeqSearch(RecordList*l,keyType k);int BinSrch(RecordList*l,keyType k);void Display(RecordList*L);void shunxu();void zheban();void Menu();/主函数int main() int i ; Me

4、nu(); printf(请选择:n); scanf(%d,&i); switch(i) case 1 : shunxu(); break ; case 2 : zheban(); case 3 : exit(1); default :输入命令错误,请重新输入! return 0 ;/创建线性表void CreatList(RecordList*L)请输入数据元素的个数:L-length);请输入数据元素: for(i=1;ilength;i+)ri);/*有哨兵的顺序查找*/int SeqSearch(RecordList*l,keyType k) l-r0.key=k ; i=l-leng

5、th ; while(l-ri.key!=k) i-; return i ;/*折半查找*/int BinSrch(RecordList*l,keyType k) int low,high,mid ; low=1 ; high=l- while(lowrmid.key) return mid ; else if(k high=mid-1 ; else low=mid+1 ;/*折半查找结果*/void zheban() int key ; RecordList l ;折半查找如下: CreatList(&l); Display(&n请输入关键字数据:key); if(BinSrch(&l,ke

6、y)关键字数据的位置是:%dn,BinSrch(&l,key);不存在这样的关键字!/*顺序查找结果*/void shunxu()顺序查找如下: if(SeqSearch(&,SeqSearch(&/输出线性表void Display(RecordList*L)数据集合输出:序号tt%dt,i);数据元素t,L-/程序菜单void Menu()/*基于线性表的查找*/* 1:顺序查找 */* 2:折半查找 */* 3:退出 */*/测试结果如下:4.2基于线性表的排序源代码#define MAXSIZE 100/定义顺序表的最大长度typedef int keyType;typedef str

7、uct keyType key;/关键字项RedType; RedType rMAXSIZE+1;/r0用作监视哨 int length;/定义顺序表长度SqList;/函数申明void CreateSqList(SqList *L);void InsertSort(SqList *L);void BInsertSort(SqList *L);void ShellInsert(SqList *L,int dk);void ShellSort(SqList *L,int dlta,int t);void BubbleSort(SqList *L);int Partition(SqList *L,

8、int low,int high);void QSort(SqList *L,int s,int t);void QuickSort(SqList *L);void SelectSort(SqList *L);void HeapAdjust(SqList *L,int s,int t);void HeapSort(SqList *L);void Display(SqList *L);int main() /主函数 int i; SqList l; int dlta3=5,3,1;/希尔排序的增量 Menu(); printf( scanf( switch(i) case 1: CreateSq

9、List(& Display(& InsertSort(& printf(直接插入排序输出: break; case 2: BInsertSort(&折半插入排序输出: case 3: ShellSort(&l,dlta,3);希尔排序输出: case 4: BubbleSort(&冒泡排序输出: case 5: QuickSort(&快速排序输出: case 6: SelectSort(&简单选择排序输出: case 7: HeapSort(&堆排序输出: case 0: exit(1); default: printf( break; Menu(); printf( scanf( retu

10、rn 0;void CreateSqList(SqList *L)/创建线性表 int i;void InsertSort(SqList *L)/直接插入排序 int i,j; for(i=2;+i) if(L-ri.keyr0=L-ri;ri=L-ri-1; for(j=i-2;r0.keyrj;r0;void BInsertSort(SqList *L)/折半插入排序 int i,j,low,high,m; low=1; high=i-1; m=(low+high)/2;rm.key) high=m-1; else low=m+1; for(j=i-1;j=high+1;rhigh+1=L

11、-void ShellInsert(SqList *L,int dk) /一趟希尔排序 for(i=dk+1;ri-dk.key) for(j=i-dk;0&(L-rj.key);j-=dk)rj+dk=L-void ShellSort(SqList *L,int dlta,int t)/希尔排序 int k; for(k=0;klength,j,temp; int lastExchangeIndex; while(i1) lastExchangeIndex=1; for(j=1;ji;j+)rj+1.keyrj+1.key;rj+1.key=L-rj.key=temp; lastExchan

12、geIndex=j; i=lastExchangeIndex;int Partition(SqList *L,int low,int high)/一趟快速排序寻找枢轴 int key; key=L-rlow.key;high)high&rhigh.key=key) -high;rlow.key=L-rhigh.key;rlow.keyrlow.key=key; return low;void QSort(SqList *L,int s,int t)/对区间s,t进行快速排序 int pivotloc=Partition(L,s,t); if(t-svoid SelectSort(SqList

13、*L) /简单选择排序 int i,j,temp,t; for(j=i+1,t=i; if(L-rt.key t=j; if(t!=i) temp=L-rt.key; L-rt.key=L-ri.key;ri.key=temp;void HeapAdjust(SqList *L,int s,int t) /堆的赛选 int j,key;rs.key; for(j=2*s;=t;j*=2) if(jt&rj.key break; L-rs.key=L- s=j;rs.key=key;void HeapSort(SqList *L) /对顺序表进行堆排序 int key,i; for(i=L-le

14、ngth/2;i0;i-) HeapAdjust(L,i,L-1;-i) key=L-r1.key;r1.key=L-ri.key=key; HeapAdjust(L,1,i-1);void Display(SqList *L) /输出线性表void Menu() /程序菜单/*基于线性表的各种排序*/ 1:直接插入排序n 2:折半插入排序n 3:希尔排序n 4:冒泡排序n 5:快速排序n 6:简单选择排序n 7:堆排序n 0:退出n/*/n4.3测试评价优点:此次做的基于线性表下的查找和排序系统,采用顺序存储结构,融合了各种查找和排序的算法,简单方便,执行效率高。不足与改进:此次课程设计由于

15、时间有限,查找法只做了基于线性表下的查找法,基于树的查找和计算式查找(Hash法查找)没有做,课外空余时间可以再去做做。对于排序也还有归并排序没有做,留到课外再完善吧。五、实习体会与总结经过这次数据结构的课程设计,首先使我对数据结构这门课更感兴趣,也对编程和这门课程有了更深入的体会和认知,数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。这门课对于计算机类的专业确实非常重要,起到举足轻重的作用,如果想干计算机这一行,那这门课一定要更深入的学习才行。其次,通过这次课程设计,让我对编程方面有了极大的进步,自己的程序调试能力也有了很大的提升,增加了自信。最后通过这次的课程设计,更是让我深刻认识到自己在学习中的不足,同时也找到了

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

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