- ベストアンサー
挿入ソートの性能評価
挿入ソートの要素比較回数と要素交換回数を数えるプログラムを作りたいのですがうまくいきません。。。 学校で出された演習課題ですので、解答そのものをいただくよりは、プログラム作成のヒントになるような回答をしていただきたいと思っています。どうかよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>もう少し詳しく 一瞬、とても不可能なことに思われましたが、チャレンジしてみます^^; 普通のプログラム言語では、 処理A 処理B 処理C のように進んでいきます。 ココで 処理Bが何回行われるか調べたい時には、 処理Aと処理Bの間にカウントする処理を加えます 処理A (処理Bの)カウント処理 処理B 処理C 処理Aの後、処理Bが実行されるのは、逐次実行型のプログラムではそのように期待できるので、処理Bの前にある変数を+1する処理を書けば、処理Bが何回実行されたかカウントすることができます。 int counter=0; の様に初期化しておいて counter++; とするか counter+=1; とするか counter=counter+1; とします。 処理Bが比較であっても要素交換であっても同じことですが、 比較の場合は比較の直前、要素交換の場合は要素交換の直前でカウントすればよいです
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
int cmpCount=0; int swapCount=0; とかしといて、 cmpCount++; if(要素の比較){ swapCount++; //交換の処理 } みたいな感じで、比較する間に比較回数のカウンタを+1して 交換する前に交換回数のカウンタを+1すればいいのでは
- Bonjin
- ベストアンサー率43% (418/971)
>要素比較回数と要素交換回数を数える なのですから、比較した時と交換した時にそれぞれをカウントアップするだけで良いのではないでしょうか? >うまくいきません 何がどううまくいかないのか書かないと的確なアドバイスは得られませんよ
お礼
回答ありがとうございます。 実は授業についていけておらず、一から参考書を読み直しているレベルです。 配列についてはそこそこ理解しており、挿入ソートを実現したプログラム自体は参考例として与えられているのですが、Bonjinさんがおっしゃっているカウントアップの方法がよくわかりません。 カウントアップの方法をご教授していただければ幸いです。
お礼
回答ありがとうございます。 もしよろしければもう少し詳しく教えていただけないでしょうか。お願いします。