北京师范大学数据构教学资料 第9章——排序.ppt

北京师范大学数据构教学资料 第9章——排序.ppt

北京师范大学数据构教学资料 第9章——排序

140-* 若每个排序码有d位, 需要重复执行d趟“分配”与“收集”。每趟对n个元素进行“分配”,对radix个队列进行“收集”。总时间复杂度为 O(d(n+radix)) 若基数radix相同, 对于元素个数较多而排序码位数较少的情况, 使用链式基数排序较好。 基数排序需要增加n+2radix个附加链接指针。 基数排序是稳定的排序方法。 140-* 各种排序方法的比较 140-* 算法分析 设堆中有 n 个结点, 且 2k-1 ≤ n 2k, 则对应的完全二叉树有 k 层。在第 i 层上的结点数≤2i-1 (i = 1, …, k)。在第一个形成初始堆的 for 循环中对每一个非叶结点调用了一次堆调整算法siftDown(), 该循环所用的计算时间为: 其中, i 是层次编号, 2i-1 是第 i 层的最大结点数, (k-i)是第 i 层结点能够移动的最大距离。 140-* 第二个 for 循环中调用了n-1次siftDown()算法, 该循环的计算时间为O(nlog2n)。因此, 堆排序的时间复杂性为O(nlog2n)。 该算法的附加存储主要是在第二个 for 循环中用来执行元素交换时所用的一个临时元素。因此,该算法的空间复杂性为O(1)。 堆排序是一个不稳定的排序方法。 140-* 归并排序 (Merge Sort) 归并,是将两个或两个以上的有序表合并

文档评论(0)

1亿VIP精品文档

相关文档