リストの利点/欠点と双方向リスト
リストを使った集合演算のように、データを連ねたリストは、単純リストとか線形リストと呼ばれる。特徴はデータ数に応じてメモリを確保する点や、途中へのデータの挿入削除が得意な点があげられる。一方で、配列は想定最大データ件数で宣 […]
構造体と実体について
構造体と実体の違いや、Javaに慣れている学生さんに あらためて、データ構造のイメージを持って欲しいので、 以下のコードを示す。 struct Complex { double re ; double im ; } ; […]
2分木の生成
先週に2分木に対する再帰などを交えたプログラムの説明をしたので、 今週は木の生成について、AVL木などを交えて説明。 後半は、情報処理センターで演習。 #include <stdio.h> #include […]
再帰関数の処理と再帰方程式
前回の授業で、処理速度のオーダ記法について解説し、 実際例と処理速度の問題について解説する。 後半は、再帰呼び出しの処理速度見積もりのための再帰方程式を示す。 特殊な処理時間の見積もり 前回授業の最後に検討しておくように […]
処理速度の分析とオーダ記法
今回は、情報処理センターの機種更新に伴うパスワード再発行やら、 授業アンケートの作業に前半の時間をとられ、そのまま演習室にて授業。 2分探索法の処理時間分析 最初に、先週説明の単純サーチ と、2重ループの最大選択法 との […]
情報構造論ガイダンス
前年度のプログラミング応用の次のステップとしての情報構造論として、 どういった内容を行うのかガイダンスを行う。 最初に、使用する教科書のタイトルにもある、アルゴリズムという言葉の説明として、 アルゴリズムとは、計算の方法 […]
ハッシュ法(2)
授業進度が予定よりも早いため前半講義で、後半はまだ提出者の少ないことから 課題の時間とした。 前回のハッシュ法では、数値(電話番号)をキーとする検索であった。 このためハッシュ関数は、数値の不規則性の部分を取り出すだけで […]
ハッシュ法
2分木なども終わって、検索処理のさらなる高速化として、 ハッシュ法を説明する。 オープンアドレス法 電話番号が記録されているのかどうかを探す処理を考えると、 最も単純な方法は、電話番号を配列の添字にする方法となる。 in […]
60%の人間はプログラミングの素質がない…
個人的には、なかなか、的を得た数字のように思うな… 本の虫:60%の人間はプログラミングの素質がない… 「ふたこぶラクダ」という名前の有名な論文に書かれているんだってさ。 引用:プログラミングの素 […]
ハノイの塔とマージソートの分析
再帰呼び出しを含む処理の、速度分析の説明として、ハノイの塔とマージソートを 説明する。 ハノイの塔 ハノイの塔は、3本の塔にN枚のディスクを積み、ディスクの上により大きいディスクを積まずに、移動させるパズル。 ハノイの塔 […]