C++ 排算法.pptVIP

  • 7
  • 0
  • 约6.82千字
  • 约 36页
  • 2016-12-25 发布于河南
  • 举报
10.5 归并排序 基本思想 将两个或两个以上的有序子序列“归并”为一个有序序列。 在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的有序子序列归并为一个有序序列。 10.5 归并排序 如何进行两路归并? 将两个有序表的元素进行比较,小者复制到目标表中。 10.5 归并排序 10.5 归并排序 原理 假设初始序列含有n个记录,则可看成n个有序的子序列,每个子序列长度为1。然后两两归并,得到?n/2?个长度为2或1的有序子序列;再两两归并,……如此重复,直至得到一个长度为n的有序序列为止。 10.5 归并排序 10.5 归并排序 性能分析 一趟归并操作是将r[1]~r[n]中相邻的长度为h的有序序列进行两两归并,这需要O(n)时间。整个归并排序需要进行log2n趟,因此,总的时间代价是O(nlog2n)。 10.5 归并排序 性能分析 算法在执行时,需要占用与原始记录序列同样数量的存储空间,因此空间复杂度为O(n)。 10.5 归并排序 总结 最好、最坏、平均时间复杂度均为O(nlogn); 空间复杂度高,为O(n); 是高效算法中唯一“稳定”的排序方法; 较少用于内部排序,多用于外部排序。 10.6 基数排序 基本思想 10.6 基数排序 多关键码排序问题 1

文档评论(0)

1亿VIP精品文档

相关文档