大叶紫金牛:堆排序的用途

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 21:47:39
堆排序学过了,到底那些时候需要用啊?

堆排常用在你的所需序列已经为堆的情况下...
详细一点,我们通常使用堆是因为我们需要使用一个序列中的最大或最小值,并且这个序列大小在不断变化。比如prim和kruskal算法都用到了堆。而在已经得知序列不再变化的时候,我们即可利用对排序一次求出所需序列。
举个例子:首先序列中有500个作业,按优先级建为堆,现在,我每次要处理优先级最高的,所以按堆操作依次取顶,并删除顶元素,可是在序列没处理完时又会加进来新作业,所以要用堆操作插入,以上操作是只有用堆才能实现的,直到某时间,确定不再会有新的作业插进来,便可由堆排序一次得到排序序列,这时,对排序的时间复杂度为恒定0(n*log(n)),不会像其他排序那样有出入,而且空间复杂度为V(n),是最低的。

基础考试考你时间复杂啊,空间复杂的时候才有用,其他一概没用,废物的排序