手写数据结构-基于最大堆实现的优先队列

手写数据结构-基于最大堆实现的优先队列

一.优先队列基础

普通队列:先进先出/

优先队列:出队顺序和入队顺序无关;和优先级相关

1.为什么使用优先队列?

  • 动态选择优先级最高的任务

    如操作系统任务管理。

手写数据结构-基于最大堆实现的优先队列

二.手写基于最大堆的优先队列及复杂度分析

package com.tc.javabase.datastructure.tree.priorityQueue;

import com.tc.javabase.datastructure.queue.Queue;
import com.tc.javabase.datastructure.tree.heap.MaxHeap;

public class PriorityQueue<E extends Comparable<E>> implements Queue<E> {

    private MaxHeap<E> maxHeap;

    public PriorityQueue(){
        maxHeap = new MaxHeap<>();
    }

    @Override
    public int getSize(){
        return maxHeap.size();
    }

    @Override
    public boolean isEmpty(){
        return maxHeap.isEmpty();
    }

    @Override
    public E getFront(){
        return maxHeap.findMax();
    }

    @Override
    public void enqueue(E e){
        maxHeap.add(e);
    }

    @Override
    public E dequeue(){
        return maxHeap.extractMax();
    }
}