[ 高橋のページ ] [ プログラミングおよび実習II2006 ]
11月9日の演習問題のプリントを提出し,チェックを受けてください.
ヒープソートのプログラムを完成させ,動作確認ができたらチェックをうけてください. ただし,ソースは,課題1020-Aを参考にして,以下の仕様にしたがって作成して下さい.
得点は何件ありますか? : 6 0番目の得点を入力してください : 33 1番目の得点を入力してください : 59 2番目の得点を入力してください : 60 3番目の得点を入力してください : 60 4番目の得点を入力してください : 77 5番目の得点を入力してください : 100 ##### 元のデータ ##### [ 33] [ 59] [ 60] [ 60] [ 77] [100] ##### 並べかえ中 ##### ヒープつくってます♪ [ 33] [ 59] [100] [ 60] [ 77] [ 60] (中略) [100] [ 77] [ 60] [ 60] [ 59] [ 33] ならべかえてます♪ [ 77] [ 60] [ 60] [ 33] [ 59] [100] (中略) [ 33] [ 59] [ 60] [ 60] [ 77] [100] ##### 並べかえ結果 ##### [ 33] [ 59] [ 60] [ 60] [ 77] [100] 交換回数 = 14
void hoge(int x[], int first, int last) { int i; i = (first+last)/2; if(first <= i-1) hoge(x, first, i-1); printf(" %d", x[i]); if(i+1 <= last) hoge(x, i+1, last); }
上記の関数hoge()が,x[0] = 0, x[1] = 11, x[2] = 22, x[3] = 33, first = 0, last = 3 として呼び出されたとすると,どのような出力が得られるか答えなさい.