質問: ### 前提・実現したいこと 表題のとおりです、降順ヒープソートをC++で実装しようとしています。 関数毎のアルゴリズムを考え、コーディングしたのですが、知識が乏しいのと自分のマシンの非力さに未だ完成にありつけておりません。 ご教授いただけると幸いです。 ### ヒープソートアルゴリズム ``` サイズnの配列D[0]~D[n-1]を入力 size=0; //2分木を表す配列サイズ初期化 for(i=0;i=0;i=i-1){D[i]=delete_maximum(T);} ``` ### push_heap関数のアルゴリズム ``` ヒープを表す配列T[1]~T[n]と追加されるxを入力 push_heap(T,x) { size=size+1; T[size]=x; //データを最後に追加 k=size; while((T[k]>T[k/2])&&(k>1)) //親の値と比較 { swap(T[k],T[k/2]); //親の値が小さければ値を交換 k=k/2; } } ``` ### delete_maximum関数のアルゴリズム ``` ヒープを表す配列T[1]~T[n]を入力 delete_maximum(T) { T[1]を出力; T[1]=T[size]; T[size]を殻にする; //葉のデータを親に移動 size=size-1; k=1; while(2*k<=size) { if(2*k==size) { if(T[k]T[2*k+1]){big=2*k;} else{big=2*k+1;} if(T[k]
回答: コードを書く場合には、デバッグ環境を整えましょう。 C++であるなら、VisualStudioを入れれば、コードの任意の行で実行を止め、変数のナカミを確認できます また、そこから1行づつ実行させて変数の状態を確認できるようになります そうすればご自分でプログラムのバグを確認、修正できるようになりますよ