网站大量收购独家精品文档,联系QQ:2885784924

数据结构-排序问题、希尔和归并排序.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构-排序问题、希尔和归并排序

折半插入排序 void BiInsertionSort ( SqList L ) { } // BInsertSort 在 L.r[1..i-1]中折半查找插入位置; for ( i=2; i=L.length; ++i ) { } // for L.r[0] = L.r[i]; // 将 L.r[i] 暂存到 L.r[0] for ( j=i-1; j=high+1; --j ) L.r[j+1] = L.r[j]; // 记录后移 L.r[high+1] = L.r[0]; // 插入 折半插入排序 low = 1; high = i-1; while (low=high) { } m = (low+high)/2; // 折半 if (L.r[0].key L.r[m].key) high = m-1; // 插入点在低半区 else low = m+1; // 插入点在高半区 折半插入排序性能分析 1)折半插入排序所需附加存储空间和直接插入排序相同,从时间上来看,折半插入排序减少了关键字的比较次数,但是移动次数不变。 2)折半插入排序的时间复杂度为o(n2)。 3)折半插入排序是一个稳定的排序方法。 希尔排序 Shell在1959年提出,又称为缩小增量排序。 基本思想:对待排记录序列先作“宏观”调整,再作“微观”调整。 所谓“宏观”调整,指的是,“跳跃式”的插入排序。 希尔排序 将记录序列分成若干子序列,分别对每个子序列进行插入排序。 例如:将 n 个记录分成 d 个子序列: { R[1],R[1+d],R[1+2d],…,R[1+kd] } { R[2],R[2+d],R[2+2d],…,R[2+kd] } … { R[d],R[2d],R[3d],…,R[kd],R[(k+1)d] } 其中,d 称为增量,它的值在排序过程中从大到小逐渐缩小,直至最后一趟排序减为 1。 希尔排序 dk=5 1 2 3 4 5 6 7 8 9 10 65 97 76 13 27 49 55 04 49 38 第一趟 1 2 3 4 5 6 7 8 9 10 49 55 04 49 38 65 97 76 13 27 希尔排序 dk=3 第二趟 1 2 3 4 5 6 7 8 9 10 49 55 04 49 38 65 97 76 13 27 1 2 3 4 5 6 7 8 9 10 49 38 27 49 55 65 97 76 13 04 希尔排序 dk=1 第三趟 1 2 3 4 5 6 7 8 9 10 49 38 27 49 55 65 97 76 13 04 1 2 3 4 5 6 7 8 9 10 27 38 49 49 55 65 97 76 04 13 希尔排序 算法描述举例 int d[]={5,3,1}; 1 2 3 4 5 6 7 8 9 10 38 65 97 76 13 27 49 55 04 49 38 65 97 76 13 27 49 55 04 49 j i j i j i j i j i 第一趟 L.r[0].key= 13 27 49 55 04 dk=d[0]=5 希尔排序 算法描述举例 int d[]={5,3,1}; 1 2

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档