解法2:
传统的堆排序只是针对一组数据的排序,数据一般数量是不变的,但是这里作为队列的底层结构,要求支持元素的进队和出队,
出队:将堆中(树的最后一个)节点和被队列(数中指针指向)中最后一个节点交换,然后以被删除的节点为根作一个自上而下的调整过程
复杂度(logN)
入队操作:树中最后一层加入一个节点,并以此自下而上的一个调整过程 logN,
代码本人就不在书写啦,
解法3:
我认为书本做法描述不是很好,关键点我认为就是一个最大值序列的维护,至于书本上非要用栈来实现队列,我觉得既然是空间换时间,我们完全可以用一个数组循环队列即可嘛
这是我个人的不同看法!!!请各位牛人指点