<概要> 1から指定したデータ数までの整数の順番が入れ替わったリストをデータとし、以下のアルゴリズムに従って並べ替えるプログラムです。 <並べ替えアルゴリズム> データ数をDとする。 Mは1からDまでの整数が任意に並べ替えられたリストである。 1からDまでの整数をランダムに2つ選ぶ。aとbとし、a<bとする。 Mのa、b番目のデータを検索する。検索結果の数値をAとBとする。 AとBを比較し、B<AならばMのa番目のAとb番目のBを入れ替える。 以上を繰り返す。 <説明> 旗を押すと待機状態に入ります。この状態でWキー、Dキー、スペースキーのいずれかを押すと以下の動作をします。 W:並べ替えアルゴリズム一周ごとに待機するかをトグル選択します。 D:データ数を変更。多くしすぎると一致率の計算が動作不良を起こしますが、並べ替えには影響しません。ターボモードにすると動作不良を起こしにくくなります。 スペース:アルゴリズム開始。 <変数などについて> データ数:指定したデータ数です。既定値は100。 処理時間:アルゴリズム処理終了後に動作時間(秒)が表示されます。 操作回数:アルゴリズムが何周したかです。 変更回数:アルゴリズムによってリストの値が変更された回数です。 操作位置A・B:<並べ替えアルゴリズム>のaとbに対応します。 操作数値A・B:<並べ替えアルゴリズム>のAとBに対応します。 一致率:データがきれいに並んでいる(処理後)リストとの一致率です。 理想のリスト(処理後のリスト)を事前に生成し、5秒ごとにMAINリストとの一致率を調べます。一致率は小数点以下5桁目を四捨五入した値です。 一致率の算出において、計算時間が5秒を超える場合は一致率が算出されません。 変更ログ:アルゴリズムによって変更された数値と場所です。
もちろん実用性は皆無です。 乱数が複雑に絡むのでばらつきが大きいですが、 データ数が100なら3~5万回の操作、 データ数が500なら100~150万回の操作、 データ数が1000なら700~800万回の操作で終わる傾向にあります。