- ふらっと C#,C♯,C#(初心者用) Part113
532 :393[sage]:2014/11/24(月) 15:11:18.25 ID:zIecUg3E - 「アルゴリズムとデータ構造」受けてきたので報告。
先生の解説の要約。 番兵でやると早くなる。 配列の要素数を1つ増やし、一番最後に'a'を入れる。 "最後で'a'が見つかったら入っていなかった" "そうでなければ入っていた" ということになる。 --------------------------- 'a'はあくまでも小文字の例として挙げてるだけだと思うんですけど、 解説出ささっと書いていたコードには if(x[i]=='a')という'a'かどうかというコードが書かれていました。
| - ふらっと C#,C♯,C#(初心者用) Part113
533 :393[sage]:2014/11/24(月) 15:12:06.17 ID:zIecUg3E - 先生が提示したアルゴリズムによる時間比較
for=100% while番兵=64.19% pointerWhile番兵=58.32% HalfFor=68.98% PointerHalfWhile番兵=40.17% oddEvenPointerBit番兵=30.26% eightPointerBit番兵=16.28% longPointerBit番兵=10.79%
| - ふらっと C#,C♯,C#(初心者用) Part113
534 :393[sage]:2014/11/24(月) 15:12:42.07 ID:zIecUg3E - その他先生の説明の要約
HalfFor 2つずつやる。 番兵のいる場所をど真ん中にする。 前からと後ろから探す方法。 oddEvenPointerBit番兵 番兵を後ろにして偶数と奇数に分けて探す方法。 eightPointerBit番兵 8個?4個?とりあえず多くをまとめて調べる方法。 longPointerBit番兵 私のはこれに似ているらしい。 先生のは4文字じゃなくて8文字まとめて調べられるらしい? すべてを試すのにそのまま書いていたらMainが100行くらいになってしまう。 ストップウォッチをリセットして実行して―は共通なので、 delegateを使って関数のアドレスを配列で保持しておけばまとめて書くことができるようになる。 ------------------------------------------ 言えば見せてくれたかもしれないですけど、 先生が作った検索部分のソースは見られませんでした。 ちなみに、次やるのはソートです。 (実はこの授業テストがあるらしいです。)
|
|