タグ

algorithmとCに関するhorihorioのブックマーク (2)

  • ヒープソートでなぜ再帰?

    ヒープソートでなぜ再帰? 〜日語版ウィキペディアの問題点と最強最速のヒープソート〜 最近ヒープソートを作らせてみると、再帰を使ったヒープソートが出てくることが多い。 再帰を使ったヒープソートは考え方が単純でわかりやすい。 けれど、ヒープソートでの繰り返しは、あらかじめ決まった回数を繰り返すため、再帰の必要性はない。 普通にループ処理をした方が圧倒的に速いし、スタックのオーバーフローの心配も少ない。 クイックソートのように何回繰り返すか分からないような場合は再帰がベストだし、再帰しか方法がないようなケースもあるが、再帰は呼び出す前の関数の状態を保持するため、あっという間にスタックのオーバーフローを引き起こす。 LinuxであればWindowsの10倍程度の再帰に対するスタックメモリ耐性を持つが、それでも遅くなることは間違いないし、かなりのスタックメモリを消費する。 ヒープソートでなぜ再帰?

  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま

  • 1