电话销售工作流程:9.7.2 堆排序复杂度分析
来源:百度文库 编辑:偶看新闻 时间:2024/05/03 09:54:28
9.7.2 堆排序复杂度分析
堆排序的效率到底有多高呢?我们来分析一下。
它的运行时间主要是消耗在初始构建堆和在重建堆时的反复筛选上。
在构建堆的过程中,因为我们是完全二叉树从最下层最右边的非终端结点开始构建,将它与其孩子进行比较和若有必要的互换,对于每个非终端结点来说,其实最多进行两次比较和互换操作,因此整个构建堆的时间复杂度为O(n)。
在正式排序时,第i次取堆顶记录重建堆需要用O(logi)的时间(完全二叉树的某个结点到根结点的距离为.log2i.+1),并且需要取n-1次堆顶记录,因此,重建堆的时间复杂度为O(nlogn)。
所以总体来说,堆排序的时间复杂度为O(nlogn)。由于堆排序对原始记录的排序状态并不敏感,因此它无论是最好、最坏和平均时间复杂度均为O(nlogn)。这在性能上显然要远远好过于冒泡、简单选择、直接插入的O(n2)的时间复杂度了。
空间复杂度上,它只有一个用来交换的暂存单元,也非常的不错。不过由于记录的比较与交换是跳跃式进行,因此堆排序也是一种不稳定的排序方法。
另外,由于初始构建堆所需的比较次数较多,因此,它并不适合待排序序列个数较少的情况。6
分析时间复杂度
分析时间复杂度
分析时间复杂度
堆排序法
堆排序发明人
堆排序的源代码
堆排序的用途
1、 完整的堆排序由三部分组成,请分析写出堆排序的各部分的算法及PAD图。
起泡排序的时间复杂度是多少?
堆排序的具体算法
谁知道空间复杂度为o(1)的归并排序算法?
求堆排序法的C++代码
请分析一下二分搜索技术的时间复杂度
分析下面语句段执行的时间复杂度
2堆西瓜,3堆橘子,4堆苹果,5堆香蕉,一共是多少堆?
请教个堆排序的问题,谢谢了!
平均赔卛排序分析表
排序。。。。。。。。
幻世录2的刻字硬币堆
货物装载中的“堆装2:1”、“堆装3:1”、“平装”分别是什么意思?
算法时间复杂度
计算算法复杂度
什么是算法复杂度
人生的复杂度?