五种排序分析与实现方法.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五种排序分析与实现方法

五种排序的分析与实现方法   摘 要 排序是数据处理应用中最普遍的一种操作。本文举例对冒泡排序法、插入排序法、选择排序法、快速排序法、希尔排序法进行了分析并说明了实现方法。在解决实际问题的过程中,应根据不同的情况,选择合适的排序算法。   【关键词】排序 算法 时间复杂度 程序 元素   排序(Sorting)也称为分类,是将一组含有几个元素的无序的数据排列成有序的序列。排序是数据处理中最普遍应用的一种操作,经过排序的数据可采用优化的算法提高程序执行的效率;增加数据输出的清晰度,便于信息检索;同时经过排序后的数据往往还含一些特殊的意义,为用户提供有价值的信息。排序算法除了在数据处理中具有一定的实际价值外,掌握排序的算法及其依据的原则,可以给学习程序设计人员以启迪,以便在实际应用中能够灵活运用更简洁、更高效的程序设计算法。   1 排序问题   对于程序设计的排序问题可以归纳为:   (1)已知一个具有n个记录的文件F;   (2)记录{R1,R2,…,Rn}都包含许多数据项;   (3)记录{R1,R2,…,Rn}都包含一个关键项Ka;   (4)任意两个记录之间Ra和Rb的次序关系唯一地由两个关键项Ka和Kb的值确定;   (5)利用等于、先于、后于三种次序关系,将F中的记录物理次序重新排列。   2 排序方法   为了便于描述,将文件F设定为含N个整型数据的数组,重点讨论排序算法。含多个数据项的按同样算法实现。   2.1 冒泡排序法(Bubble Sort)   冒泡排序法是一种简单的、基本的排序方法。它的思想是重复地扫描要排序的数列,一次比较两个相邻元素,如果他们的顺序违背规则就把他们进行交换。这样进行若干遍处理,直到全部排好为止。   例如:将{29,23,15,47,05}按从小到大排列   初始关键字: 29 23 15 47 05   第一趟排序后:23 15 29 05 [47]   第二趟排序后:15 23 05 [29 47]   第三趟排序后:15 05 [23 29 47]   第四趟排序后:05 [15 23 29 47]   结 果:05 [15 23 29 47]   从上例可以看出,在该排序中,若需排序的数据为正序,则只进行一次排序即可。若需排序的数据为逆序,则需进行N-1轮排序。需排序的序列为一随机数列,则比较的次数是上述两种情况的平均数值,时间复杂度为0(N2)。   用C程序实现冒泡排序算法的函数:   void Bubble_Sort(int a[],int N)   {for(int j=0;jN-1;j++)   for(int i=0;iN-1-j;i++)   {if(a[i]a[i+1])   {int temp=a[i];   a[i]=a[i+1];   a[i+1]=temp;}}   }   2.2 插入排序法(Insert Sort)   插入排序法是一种比较直观的排序方法。它的思想是以第一元素作为有序序列,从第二个元素开始,依次将每一个元素插入到这个有序的序列中,从而使全部数据有序。   例如:将{29,23,15,47,05}按从小到大排列   初始关键字: 29 23 15 47 05   第一趟排序后:[29] 23 15 47 05   第二趟排序后:[23 29] 15 47 05   第三趟排序后:[15 23 29] 47 05   第四趟排序后:[15 23 29 47] 05   结 果:[05 15 23 29 47]   从上例可以看出,在该排序中,若需排序的数据为正序,则比较的次数为N-1次。若需排序的数据为逆序,则最多比较的次数(N+2) (N-1)/2次。需排序的序列为一随机数列,则比较的次数是上述两种情况的平均数值,时间复杂度为0(N2)。   用C程序实现插入排序算法的函数:   void Insert_Sort(int a[],int N)   {for(int i=1;iN;i++)   {int temp=a[i];   int index=i-1;   while(index=0temp  {a[index+1]=a[index];   index--;}   a[index+1]=temp;}   }   2.3 选择排序法(Selection Sort)   选择排序法是一种程序简洁、流程清晰的排序方法。它是对交换排序法的一个改进算法。它的思想是在对数据的扫描过程中,每轮都从需排序的数据中寻找关键字最小的元素,与第一个元素进行交换位置,在剩余的元素中再找出一个最小的元素与第二个元素进行交换位置,直到全部排好为止。

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档