排序算法汇总总结介绍.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
 HYPERLINK /biyeymyhjob/archive/2012/07/17/2591457.html 排序算法汇总总结 一、插入排序 直接插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 代码实现: #include stdio.h #include stdlib.h void swap(int *p1, int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } void insertSort(int *a,int len) { int i,j; for(i=0;ilen;i++) { for(j=i+1;j=1;j--) { if(a[j]a[j-1]) swap(a[j],a[j-1]); } } } 希尔排序,也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。它的基本思想是先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量dt=1(dtdt-l…d2d1),即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。 代码实现: #include stdio.h #include stdlib.h void swap(int *p1, int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } void shell(int *a,int d,int len) { int i,j; for(i=d+1;ilen;i++) { for(j=i+d;j=i jlen;j--) { if(a[j]a[j-d]) swap(a[j],a[j-d]); } } } void shellSort(int *a,int d,int len) { while(d=1) { shell(a,d,len); d=d/2; } } 二、交换排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 代码实现:(swap函数同前 以后同) void bubbleSort(int *a,int len) { int i,j,change; for(i=0;ilen;i++) { change=0; for(j=len-1;ji;j--) { if(a[j]a[j-1]) { change=1; swap(a[j],a[j-1]); } } if(!change) break; } } 快速排序是由东尼·霍尔所发展的一种排序算法 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所

文档评论(0)

a336661148 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档