希尔排序和快速排序_第1页
希尔排序和快速排序_第2页
希尔排序和快速排序_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验题目:排序技术综合应用实验目的:(1)熟练掌握常用的排序方法,并掌握用高级语言实现排序算法的方法;(2)深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;(3)了解各种方法的排序过程及其依据的原则,并掌握各种排序方法的时间复杂度的分析方法。实验内容:对希尔排序、快速排序、归并排序任意选择两种排序方法进行比较。任意选择希尔排序、快速排序、归并排序中两种排序方法,对任意给定一组数据:单增、单减、乱码等,对它们进行比较分析。设计分析:在排序过程中,若整个表都是放在内存中处理,排序是不涉及数据的内外存交换,则称之为内排序。本次实验要求实现内排序中的两种:希尔排序和快速排序。希尔排序的过程:

2、先取定一个小于n的整数d1作为第一个增量,把表的全部记录分成d1的倍数的记录放在同一个组中,在各组内进行直接插入排序,然后去第二个增量d2(d1),重复上述的分组和排序,直到所取的增量d1=1,即所有记录放在同一组中进行直接插入排序为止。快速排序的过程:在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入适当位置后,数据序列被此记录划分成两部分。所有关键字比该记录关键字小的记录放置在前一部分,所有比他大的记录放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一趟快速排序。之后对所有的两部分分别重复上述过程,直到每部分有一个记录或空为止。源程序代码:#include#def

3、ine Max 30typedef structint key;RecType;RecType RMax,SMax;void ShellSort(RecType R, int n) / 希尔排序int i, j, gap;RecType tmp;gap=n/2;while(gap0)for(i=gap; i=0&tmp.keyRj.key)Rj+gap=Rj;j=j-gap;Rj+gap=tmp;gap=gap/2;void QuickSort(RecType R, int s, int t) / 快速排序int i=s, j=t;RecType tmp;if(si&Rj.keytmp.key

4、)j-;Ri=Rj;while(ij&Ri.keytmp.key)i+;Rj=Ri;Ri=tmp;QuickSort(R,s,i-1);QuickSort(R,i+1,t);void main()int n, i;printf(请输入关键字个数:);scanf(%d, &n);printf(请输入关键字序列:n);for(i=0; in; i+)scanf(%d, &Ri.key);Si.key=Ri.key;ShellSort(R, n);printf(希尔排序结果为:);for(i=0; in; i+)printf(%d , Ri.key);printf(n);QuickSort(S, 0, n-1);printf(快速排序结果为:);for(i=0; in; i+)printf(%d , Si.key);printf(n);测试用例:对序列0,1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1,0和3,5,2,8,0,6,1,4,7,9的测试结果如图所示。图9-1图9-2图9-3实验总结:此次实验实现了两种排序方法:希尔排序和快速排序。通过编程调试运行和不断地修改,我也基本上了解了两种排序的原理过程,感觉这两种方法效率非常高,而相对于它们以前学过的冒泡排序就显得稍慢一点,总而言之,不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论