2017-02-16 10 views
0

オブジェクト指向ではない静的メソッドで最大ヒープを構築しようとしています。これは私が持っているものですが、{"C"、 "D"、 "A"、 "B"、 "E"}の配列を使ってメソッドを呼び出すと、最大ヒープではなく配列が返されます注文。出力は{"E"、 "D"、 "A"、 "B"、 "C"}でなければなりません。どんな助けも素晴らしいだろう。前もって感謝します!オブジェクト指向ではないbuildMaxHeapメソッド

public static void buildMaxHeap(String[] x, int n) { 
    int left = 2*n; 
    int right = 2*n + 1; 
    int max = n; 
    for(int i = x.length/2; i >= 0; i--) { 
    if(left <= x.length && x[left].compareTo(x[max]) > 0) { 
     max = left; 
    } 
    if(right <= x.length && x[right].compareTo(x[max]) > 0) { 
     max = right; 
    } 
    if(max != n) { 
     String temp = x[n]; 
     x[n] = x[max]; 
     x[max] = temp; 
     buildMaxHeap(x,max); 
    } 
    } 
} 
+0

申し訳ありませんが、私は、n = 0で開始し、しかし、あなたは明らかで始まるN = 5 、 右?まあ、あなたのアルゴリズムをデバッグした場合、あなたの値は常に配列の境界から外れているので(左と右がx.lengthより大きい)、何もifの中に入ることはありません。だから、決して配列を変更しないでください。 – Igor

答えて

0

ことだけでなく、オペレーターとして、セルの長さを使用しているときに異なるため、最初のセルの大きさとそのポインタの、正しくな出力に問題が発生する可能性があり、CやC++でのコーディングには覚えておいてください。これは、セルの初期長さを上書きし、8バイトに短縮します。

&アルクリズムをソートすることで、配列のセルの文字を数値に基づいて並べ替えることより、これらの文字のASCII値を検索してみます。文字の

取得ASCII値:Get ASCII value at input word

より良い、より広いが、細胞のに問題があることを説明し、そのポインタの長さ: Why does a C-Array have a wrong sizeof() value when it's passed to a function?

+0

申し訳ありませんが、適切なコードを提供していませんが、私は主にC/C++でプログラムします。 – TheInvisibleMan

関連する問題