快速排序演示-编程达人.PPTVIP

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

* * * * * * * * * * * * * 1.排序概述 2.插入排序 3.交换排序 昆山爱达人信息技术有限公司 QQ:254830010 本节内容 排序概述 1.什么是排序? 将一组杂乱无章的数据按一定的规律顺次排列起来 2.排序的目的—便于查找 3.排序算法的好坏如何衡量 时间效率---排序速度(即排序所花费的全部比较次数) 空间效率---占内存辅助空间的大小 稳定性---若两个记录A和B的关键字值相等,排序后A、B的先后次序保持不变,则称这种排序算法是稳定的 昆山爱达人信息技术有限公司 QQ:254830010 排序概述 排序概述 4.什么是内部排序? 若待排序记录都在内存中,称为内部排序 若排序的过程中依赖外部存储器,称外部排序 5.内部排序的算法有哪些 插入排序 交换排序 选择排序 归并排序 昆山爱达人信息技术有限公司 QQ:254830010 排序概述 概述 1.插入排序的基本思想是:每步将一个待排序的对象按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止 简言之,边插入边排序,保证子序列中随时都是排好序的 插入排序的2种具体实现的算法: 1)直接插入排序 2)希尔(shell)排序 昆山爱达人信息技术有限公司 QQ:254830010 插入排序 直接插入排序 1.新元素插入到哪里?在已经形成的有序表中线性查找,并在适当的位置插入,把原来位置上的元素向后移动 昆山爱达人信息技术有限公司 QQ:254830010 插入排序 直接插入排序 typedef struct { int r[MAXSIZE+1];/* 用于存储要排序数组,r[0]用作哨兵或临时变量 */ int length; /* 用于记录顺序表的长度 */ }SqList; /* 对顺序表L作直接插入排序 */ void InsertSort(SqList *L) { int i,j; for(i=2;i=L-length;i++) { if (L-r[i]L-r[i-1]) /* 需将L-r[i]插入有序子表 */ { L-r[0]=L-r[i]; /* 设置哨兵 */ for(j=i-1;L-r[j]L-r[0];j--) L-r[j+1]=L-r[j]; /* 记录后移 */ L-r[j+1]=L-r[0]; /* 插入到正确位置 */ } } } 昆山爱达人信息技术有限公司 QQ:254830010 插入排序 希尔(Shell)排序 1.基本思想: 先将整个待排序记录序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序 技巧:子序列的构成不是简单的“逐段分割”,而是将相隔某个增量dk的记录组成一个子序列,让增量dk逐趟缩短(例如依次取5,3,1),直到dk=1为止 优点:让关键字值小的元素能很快前移,且序列若基本有序时,再用直接插入排序处理,时间效率会高很多。 昆山爱达人信息技术有限公司 QQ:254830010 插入排序 希尔(Shell)排序 2.演示 昆山爱达人信息技术有限公司 QQ:254830010 插入排序 希尔(Shell)排序 3.实现代码: /* 对顺序表L作希尔排序 */ void ShellSort(SqList *L) { int i,j,k=0; int increment=L-length; do { increment=increment/3+1;/* 增量序列 */ for(i=increment+1;i=L-length;i++) { if (L-r[i]L-r[i-increment])/* 需将L-r[i]插入有序增量子表 */ { L-r[0]=L-r[i]; /* 暂存在L-r[0] */ 昆山爱达人信息技术有限公司 QQ:254830010 插入排序 希尔(Shell)排序 2.实现代码: for(j=i-increment;j0 L-r[0]L-r[j];j-=increment) L-r[j+increment]=L-r[j]; /* 记录后移,查找插入位置 */ L-r[j+increment]=L-r[0]; /* 插入 */ } } printf( 第%d趟排序结果: ,++k); print(*L); } while(increment1); } 昆山爱达人信息技术有限公司 QQ:254830010 插入排序 概述 基本思想: 两两比较待排序的记录的关键码,如果发生逆序(即排序顺序与排

文档评论(0)

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

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

1亿VIP精品文档

相关文档