第20讲插入和交换排序.pptVIP

  • 2
  • 0
  • 约8.51千字
  • 约 65页
  • 2017-07-31 发布于广东
  • 举报
三、希尔排序 Shell Sort 解决方法: 将相隔某个“增量”的记录组成一个子序列。 增量应如何取? 希尔最早提出的方法是d1=n/2,di+1=di/2。 关键问题(1)应如何分割待排序记录? 希尔排序特点 子序列的构成不是简单的“逐段分割”,而是将相隔某个增量的记录组成一个子序列 希尔排序可提高排序速度,因为 分组后n值减小,n2更小,而T(n)=O(n2),所以T(n)从总体上看是减小了 关键字较小的记录跳跃式前移,在进行最后一趟增量为1的插入排序时,序列已基本有序。 增量序列取法 希尔排序算法的时间性能是所取增量的函数,而到目前为止尚未有人求得一种最好的增量序列。 最后一个增量值必须为1 实战: 有一组记录的关键字为: (6,2,0,9,1,5,3,8,7,4),给出直接插入排序和希尔排序的排序过程。 交换排序的主要操作是交换,其主要思想是:在待排序列中选两个记录,将它们的关键码相比较,如果反序(即排列顺序与排序后的次序正好相反),则交换它们的存储位置。 交换排序 反序则 交换 ri rj 基本思想:两两比较相邻记录的关键码,如果反序则交换,直到没有反序的记录为止。 rj rj+1 ri+1 ≤ … ≤ rn-2 ≤rn-1 无序区 有序区 0≤j≤i

文档评论(0)

1亿VIP精品文档

相关文档