maxHeapをminHeapに変更する方法を検討するのには苦労しています。私は現在、maxHeapアルゴリズムを使用していますが、変更方法を知りたいと思います。maxHeapソートをminHeapソートに変更する
public static int [][] fixheap(int heap[][], int n, int i){
int j=2*i;
int weight = heap[i][0];
while (j<=n){
if((j<n) && heap[j][0] < heap[j+1][0])
j++;
if(weight >= heap[j][0]) break;
else
heap[j/2][0] = heap[j][0];
j=j*2;
}
heap[j/2][0]= data;
return heap;
}
public static void makeheap(int heap[][], int n){
for (int i=n/2; i>=0; i--){
fixheap(heap, n ,i);
}
}
私は特定の兆候を逆転しようとした関連はしかし、私はのminheapを発見していないように見える:これは私が使用しているmaxHeapです。どんな助けも素晴らしいだろう、ありがとう。
投稿したコードが正しく表示されず、コンパイルされません。データとは何ですか? – templatetypedef
実装について...まず、このヒープが2D配列を使用している理由を理解していません。おそらくあなたのシステムのユニークな制約です。次に、データ変数はどこに宣言されていますか?この実装のように、MaxHeapを提供するためにはかなりの作業が必要です。 – allingeek
2次元配列はシステム制約であり、返される値は最大ヒープであり、nは配列内の要素数です。 –