Javaでヒープのクラスを書いています。
クラスヒープには
class Heap{
int maxsize=1000;
int[] heap= new int[maxsize];
int size=0;
//.... some methods basically, print, insert and remove
int[] sortHeap (){
int[] sorted= new int[size];
Heap copy= new Heap();
copy.heap=heap;
copy.size=size;
int i=0;
while (copy.size>0){
sorted[i]=copy.remove();
i++;
}
return sorted;
}
}
私が作成しようとしているメソッドの 1 つは、並べ替えられたヒープを返すことです。元のヒープを破壊したくありません。ただし、このメソッドを呼び出すと、呼び出し元の元のヒープが破棄されます。誰かが私になぜこれが起こるのか説明できますか?
例えば。ヒープが -17,
-1, -7,
1, 0, 2, -5,
17, 57, 27, 3, 127, 9, // 正しく出力されたとします
ここで、test.heapSort(); を呼び出します。結果の配列を出力します。
次に、この後にヒープを印刷すると結果が得られます
127,
127, 127,
57, 57, 127, 27,
27, 57, 27, 3, 127, 9,
ありがとうございました。