arraylist를 사용하여 Java에서 내 자신의 일반적인 바이너리 힙을 구현해야합니다. 최대 힙 및 최소 힙을 지원해야합니다. Comparator를 BinaryHeap 생성자에 전달하여 구현해야합니다.비교기를 슈퍼 생성자로 전달
전달 된 Comparator의 compare-method가 수행하는 작업에 따라 최소 또는 최대 힙이되는 것 같습니다. 나는 기본 PQ (기본 분)를 만들고 PQ를 확장하고 Comparator를 슈퍼 생성자에 전달하는 MaxPQ 클래스를 작성한다고 생각했습니다. 하지만 첫 번째 줄에서 슈퍼를 호출해야하므로 Comparator를 어디에서 초기화해야할지 모르겠습니다. 어떤 아이디어?
import java.util.Comparator;
public class MaxHeap<Bid> extends BinaryHeap<Bid> {
public MaxHeap(){
MaxComp maxComp = new MaxComp();
super(maxComp);
}
}
class MaxComp implements Comparator<Bid>{
public int compare(Bid a, Bid b){
return (a.val - b.val);
}
}
시도 Dmitrys 조언 super(new MaxComp());
, "BinaryHeap<Bid>(MaxComp) is undefined"
제작 :
다음은 MaxHeap에 대한 코드입니다. 작업중인 입력하는 당신이 이미 지정했기 때문에,
super(new MaxComp());
을 대신 MaxHeap<Bid> extends ...
사용 MaxHeap extends ...
로, 다음과 같은
public class BinaryHeap<E>{
private Comparator<? super E> comp;
private ArrayList<E> array;
private int last; // index of last element
public BinaryHeap(Comparator<? super E> comp){
this.comp = comp;
array = new ArrayList<E>();
}
몇 가지 코드를 보여주십시오. 그래서 당신이하고 싶은 것을 명확하게하고 어떻게하고 싶으십니까? –
PQ는 무엇을 의미합니까? –
PriorityQueue, 기본적으로 synonoyms라고 생각합니다. –