私のデータ構造クラスの宿題は、汎用ヒープ ADT を作成することです。siftUp() メソッドでは比較を行う必要があり、親が小さい場合はスワップを行う必要があります。私が抱えている問題は、ジェネリック型では比較演算子が有効でないことです。Comparable インターフェースを使用する必要があると思いますが、私が読んだことから、配列で使用するのは良い考えではありません。このサイトも検索しましたが、この投稿に関連する良い情報を見つけましたが、解決策を見つけるのに役立ちませんでした
関係のないコードの一部を削除しました ありがとう
public class HeapQueue<E> implements Cloneable {
private int highest;
private Integer manyItems;
private E[] data;
public HeapQueue(int a_highest) {
data = (E[]) new Object[10];
highest = a_highest;
}
public void add(E item, int priority) {
// check to see is priority value is within range
if(priority < 0 || priority > highest) {
throw new IllegalArgumentException
("Priority value is out of range: " + priority);
}
// increase the heaps capacity if array is out of space
if(manyItems == data.length)
ensureCapacity();
manyItems++;
data[manyItems - 1] = item;
siftUp(manyItems - 1);
}
private void siftUp(int nodeIndex) {
int parentIndex;
E tmp;
if (nodeIndex != 0) {
parentIndex = parent(nodeIndex);
if (data[parentIndex] < data[nodeIndex]) { <-- problem ****
tmp = data[parentIndex];
data[parentIndex] = data[nodeIndex];
data[nodeIndex] = tmp;
siftUp(parentIndex);
}
}
}
private int parent(int nodeIndex) {
return (nodeIndex - 1) / 2;
}
}