noldor's diary

調べたことのメモとよしなしごと

PHPでアルゴリズム

第8回 ハッシュテーブル

ハッシュテーブルは を実現する、夢のような方法です。 の数式の中には n がありません。つまり、どんなにデータ量が増えたとしても速度がほとんど変わらないということです。それを実現するために、力まかせ探索や二分探索のように「違ったら次を探す」では…

第7回 二分探索(バイナリサーチ)

力まかせ探索は でした。二分探索(バイナリサーチ)は です。クイックソートは でしたが、「半分、また半分」のときにlog nが登場します。二分探索も「半分、また半分」です。 詳しい説明はwikipediaで。力まかせ探索と違い、二分探索はソート済みであるこ…

第6回 力まかせ探索(フルスキャン)

何かを検索するプログラムを書く場合に、一番簡単かつ分かりやすい方法が「力まかせ探索」とか呼ばれる方法です。「力まかせ探索」はどちらかといえば通称で、正確には名称は存在しないかもしれません。データベースではフルスキャンと呼ばれます。 $val) {…

第5回 エラトステネスのふるい

エラトステネスのふるいとは、素数を見つけ出すための方法です。解説はwikipediaにおまかせです。wikipediaのgif動画はすごいですね。

第4回 分布数え上げソート

最速とされているクイックソートの計算量は ですが、分布数え上げソートは です。その速さはクイックソートを上回ります。

第3回 計算量

計算量とは、アルゴリズムの速さの目安になるものです。入力データの個数をnとしたときの処理回数を大雑把に表します。 先のバブルソートだと 、クイックソートだと と書きます。第1回のデータは $input = array(5, 2, 4, 3, 4, 8, 7, 2, 1); だったので、n…

第2回 クイックソート

クイックソートはPHPに限らずいろんな言語でライブラリとして実装されており、例えばC言語ではqsort()として標準ライブラリとして用意されています。 その名の通り「速いソート」で、実装時の工夫等もあり汎用ソートアルゴリズムとしては最速とされています…

第1回 バブルソート

10番煎じぐらいな気がしなくもないですが、PHPでアルゴリズムのお勉強です。 初回はおなじみバブルソート。バブルソートそのものの解説はwikipediaでどうぞ。 0; $n--) { // $n はソート対象範囲の最大 for ($i = 0; $i < $n; $i++) { // $i はソートのポイ…