次のプログラムの内容(できれば詳しく)教えてくれませんか?
結果は分かるのですが、過程がわかりません。
どうかよろしくお願いします。
長いので次のところでプログラムを見てください。http://www.geocities.co.jp/HiTeens-Penguin/9298/ …
少しめんどくさいかもしれませんがよろしくお願いします。

A 回答 (2件)

よく学校の授業でありがちなプログラムですね(^^;



プログラムの方HPで拝見しました。
メイン処理は、
(1)データ件数入力
(2)実際のデータを乱数で取得するか、ソート済み、1固定にするか入力
(3)現在時刻を取得
(4)ソート処理呼び出し
(5)ソート終了時刻からソートにかかった秒数を画面に表示
以上です。

ソート処理(SelectSort)は基本ソートプログラムですね・・
最小値を検索して順次入れ替えていくものです。

例えば以下のようなデータの場合
a[0]=2, a[1]=3, a[2]=1
最終結果は
a[0]=1, a[1]=2, a[2]=3
とならなければなりませんね!

そこで、まずa[0]に入れるべき、最小値を探し、次にa[1]に入れるべき値を探すと最後のa[2]には自動的に最大値が入りますね!
この入れる部分を次へずらしていくのがiのループです。

次に出てくるjのループですが、最小値を検索する部分です。
minposが最小値の入っている配列番号で、最小値が見つかり次第minposに退避しています。

最小値の検索が終わったところで、値の入れ替えを行っています。
入れ替えを行っているのが、swap()です。
swap()は単純に、a[i]とa[minpos]の値を入れ替えているです。

上記例の場合は、以下のようにswap()が呼ばれ値は次のように変化します。
swap(a,0,2); → a[0]=1, a[1]=3, a[2]=2
swap(a,1,2); → a[0]=1, a[1]=2, a[3]=3

以上が処理の全貌です。。

ちなみに、gamen()は呼び出されない関数のため、無視しておきました~
    • good
    • 0
この回答へのお礼

詳しい解説ありがとうございます。
役に立ちました。

お礼日時:2001/07/27 07:13

大まかに行きます。

長いですがやってることは簡単なので。
このプログラムはグローバル配列を使ったソートの時間比較のプログラムです。フローはこんな感じ。

ソートさせる配列の大きさを指定

↓(エラーならメッセージ出して終了)

配列に入れる数の方法を指定。
1ならランダムに、2なら順番に、3なら全部1。

↓(その他数値を入れると配列にゴミデータが残る)

それで実際に別関数で、昇順ソート。

↓(最小値を求めて交換つー方式ですな。)

そしてかかった時間を表示する。

って感じです。ですけどこのプログラム、使ってない関数や(gamen)文法的にあれ?と思うところがありますねえ・・・
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2001/07/27 07:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ