(快速、基数)排序算法的设计.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
(快速、基数)排序算法的设计

实验三: (快速、基数)排序算法的设计 一、实验目的和要求 (1) 深刻理解排序的定义和各种排序方法的特点,并能灵活运用。 (2) 掌握常用的排序方法,并掌握用高级语言实现排序算法的方法。 (3) 了解各种方法的排序过程及其依据的原则,并掌握各种排序方法的性能的分析方法。 二、实验内容和原理 (1)设计直接插入排序、冒泡排序、快速排序算法。 (2)设计基数排序算法。 三、实验环境 1. 硬件:PC机; 2. 软件:Windows操作系统、Visual C++ 6.0 四、算法描述及实验步骤 直接插入排序 在要排序的一组数中,假设前面(n-1) [n=2] 个数已经是排?好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数?也是排好顺序的。如此反复循环,直到全部排好顺序。? 冒泡排序 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上?而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较?小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要?求相反时,就将它们互换。? 快速排序算法 通过一趟?扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次?扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只?减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)?的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理?它左右两边的数,直到基准点的左右只有一个元素为止。 基数排序算法 五、调试过程 六、实验结果 1、 2、 3、 4、 七、总结 通过这次实验,对于多种排序有了一定地了解,在这次实验过程中,虽然遇到挺多的困难,但是我还是认真的对待。同时意识到我对这些方面的知识还是了解的不够深刻。 附录: 1、#include iostream.h int a[100]; void insertsort(int n,int a[]) { int i,j; for(i=2;i=n;i++) if(a[i]a[i-1]) { a[0]=a[i]; a[i]=a[i-1]; for(j=i-2;a[0]a[j];j--) a[j+1]=a[j]; a[j+1]=a[0]; } } int main() { int n,i; cinn; for(i=1;i=n;i++) { cina[i]; } insertsort(n,a); for(i=1;i=n;i++){couta[i] ; } return 0; } 2、#includeiostream.h #define swap(x,y,t)((t)=(x),(x)=(y),(y)=(t)) const int N=5; void sort(int b[],int count); int main() { int a[N]; coutendl; cout请输入:; for(int i=0;iN;i++) cina[i]; coutendl; cout输出过程: ; for(i=0;iN;i++) cout a[i]; coutendl; cout输出结果:; sort(a,N); return 0; } void sort(int b[],int n) { int t,tempt; for(int i=0;in;i++) { t=n-i-1; for(int j=0;jt;j++) { if(b[j]b[j+1]) swap(b[j],b[j+1],tempt); } } for(i=0;iN;i++) cout b[i]; } 3、#includeiostream.h templateclass T void quick_sort(T a[],int p,int r) { if(pr){ int q=partition(a,p,r); quick_sort(a,p,q-1); quick_sort(a,q+1,r); } } templateclass T int partition(T a[],int p,int r) { int i=p,j=r+1; T x=a[p]; while(true){ while(a[++i]xir); while(a[--j]x); if(i=j)break; swap(a[i],a[j]); } swap(a[j],a[p]

文档评论(0)

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

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

1亿VIP精品文档

相关文档