数据结构基础(金远平).ppt

JYP * 分析:设2k–1≤n 2k,则与记录表对应的完全二叉树有k层,第i层的结点数≤2i–1。第一个for循环对每个有子女的结点调用adjust一次。该循环的时间不大于各层结点数与该层结点可移动的最大距离的积之和,即 第二个for循环调用adjust共n–1次,最大深度为 ?log2(n+1)?。 因此,堆排序的总计算时间是O(n log n)。 而且,只需要O(1)辅助空间。 JYP * 作业:P259—16 JYP * 7.7 基数排序 当n个记录的关键字list[i].key(0≤in)的取值是0到n–1范围内的整数时,可以用下列代码对其排序: for (int i = 0; i n; i++) result[list[i].key] = list[i]; 这里用关键字值来确定记录在最终就序数组中的位置。这就是最基本的箱排序。 其中,我们为n个关键字值安排n个箱子,并根据关键字值将记录分配到对应的箱中。 此方法效率极高,无论记录关键字的初始顺序如何,只需要O(n) 时间即可完成排序。 JYP * 在实际应用中,一个箱子可以存放多个记录,同时关键字的取值范围不必与n直接关联。 为了有效地利用箱排序的思想,可以将关键字解释为多个子关键字:K0,

文档评论(0)

1亿VIP精品文档

相关文档