- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章查找和排序技术修改
qksort1(p,m,n) int m,n; ET p[]; { int i;if (n>m) /*子表不空*/{i=split(p,m,n); /*分割*/ qksort1(p,m,i-1);/*对前子表进行快速排序*/ qksort1(p,i+1,n);/*对后子表进行快速排序*/} return; } 快速排序----算法描述 int split(p,m,n) /*返回分界线位置*/ int m,n; ET p[]; { int i,j,k,u;ET t; i=m; j=n; k=(i+j)/2; if ((p[i]>=p[j])(p[j]>=p[k])) u=j; /*选取一个元素*/ else if ((p[i]>=p[k])(p[k]>=p[j])) u=k; else u=i; t=p[u]; p[u]=p[i]; while (i!=j){ while ((i<j)(p[j]>=t)) j=j-1; if (i<j) { p[i]=p[j]; i=i+1;} while ((i<j)(p[i]<=t)) i=i+1; if (i<j) { p[j]=p[i]; j=j-1;} } p[i]=t; return(i); } 快速排序----算法描述 程序演示 教材刊误 3.2.2 简单插入排序与希尔排序---插入类排序 1. 简单插入排序 所谓插入排序,是将无序序列中的各元素依次插入到已经有序的线性表中。 在线性表中,只包含第1个元素的子表可以看成有序表 从线性表的第2个元素开始直到最后一个元素,逐次将其中的每一个元素插入到前面已经有序的子表中。 假设线性表中前j-1个元素已经有序,现在要将线性表中的第j个元素插入到前面的有序子表中,插入过程如下: 1 1 3 5 7 6 9 ↑j=6 5 1 7 3 1 6 9 ↑j=2 1 5 7 3 1 6 9 ↑j 1 5 7 3 1 6 9 ↑j 1 3 5 7 1 6 9 ↑j 1 1 3 5 6 7 9 ↑j=7 =3 =4 =5 PROCEDURE INSORT(P,n) FOR j=2 TO n DO { T=P(j);k=j-1 WHILE (k>0)and(P(k)>T) DO { P(k+1)=P(k);k=k+1 } P(k+1)=T } RETURN 输入:待排序序列P(1:n)。输出:有序序列P(1:n)。 简单插入排序----算法描述 insort(p,n) int n; ET p[]; { int j,k; ET t; for (j=1; j<n; j++) { t=p[j]; k=j-1; while ((k>=0)(p[k]>t)) { p[k+1]=p[k]; k=k-1; } p[k+1]=t; } return; } 程序演示 简单插入排序----算法描述 希尔排序----思路: 将整个无序序列分割成若干小子序列分别进行插入排序子序列的分割方法如下: 将相隔某个增量h的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序,排序就完成。 增量序列一般取 ht=n/2k(k=1,2,…,[log2n]), 其中n为待排序序列的长度。 2. 希尔排序 输入:待排序序列P(1:n)。 输出:有序序列P(1:n)。 PROCEDURE SHLSORT(P,n) h=n/2 WHILE (h>0) DO { FOR j=h+1 TO n DO { t=P(j); i=j-h WHILE (i>0)and(P(i)>t) DO { P(i+h)=P(i); i=i-h} P(i+h)=t } h=h/2 } RETURN 希尔排序----算法描述 shlso
您可能关注的文档
最近下载
- 电力设备公司产品制造车间生产定额计件工资实施办法.docx VIP
- 2023国有企业“三重一大”决策制度实施细则办法.pdf VIP
- 安徽大学《地球科学概论》课件-第4讲大气圈、冰冻圈、岩石圈.pptx VIP
- 国家开放大学(电大)《农业生态基础.》2020年09月春季期末考试真题及答案(试卷代号2794).pdf VIP
- 餐饮行业员工职业规划.pptx VIP
- 《数学数学期望》课件.ppt VIP
- 肾病内科专业疾病临床诊疗规范2025版.docx VIP
- 质量信得过班组培训课件.pptx VIP
- 《高级英语FacetoFacewithHurricaneCamille》-精选课件(公开).ppt VIP
- 高中化学课件:芳环上的亲核取代反应.pptx VIP
文档评论(0)