◆◇◆◇◆◇◆◇
ゆたか創造舎
◆◇◆◇◆◇◆◇



【既刊】

ソースを見ながら動かしながら
Visual C#.NETによる

明解
データ構造とアルゴリズム

本体価格2,600円
著者 白井 豊


【戻る】⇒




目   次

はじめに
第1章 基本的なアルゴリズム
1.1 アルゴリズムとは
1.2 整数の和
1.3 桁数を求める
1.4 多重ループ
第2章 基本的なデータ構造
2.1 C#のデータ型
2.2 配列
2.3 多次元配列
2.4 構造体
第3章 操作を伴うデータ構造
3.1 データ構造と操作
3.2 スタック
3.3 キュー
3.4 動的な領域管理
3.5 線形リスト
3.6 循環・重連結リスト
3.7 木構造
第4章 探 索
4.1 単純線形探索
4.2 番兵法
4.3 2分探索法
4.4 計算量
4.5 ハッシュ法
第5章 再帰的アルゴリズム
5.1 再帰の考え方
5.2 ハノイの塔
5.3 8王妃問題
5.4 騎士巡回問題
5.5 ナンプレパズル
第6章 ソート
6.1 ソートの考え方
6.2 単純交換法
6.3 単純選択法
6.4 単純挿入法
6.5 シェルソート
6.6 クイックソート
6.7 マージソート
6.8 ヒープソート
6.9 度数ソート
第7章 集 合
7.1 集合とは
7.2 配列による集合
7.3 ビットベクトルによる集合
第8章 文字列処理
8.1 C#の文字列
8.2 文字列の基本操作 8.3 文字列の検索
第9章 色々なアルゴリズム
9.1 等高線
9.2 陰線消去
9.3 ランダムドット
9.4 色々な曲線/フラクタル
[付録] プログラム等のダウンロード
索引

はじめに

日本語を知っている
からといって,
小説や説明書を
書けるとは限りません。

同様に,
プログラミング言語を
知っているからといって
プログラミングできる
わけではありません。
適用される分野の
知識や基本的な
処理手順について
知っておく必要が
あります。

ただし, プログラムが
適用される
すべての分野の
知識等を網羅するのは,
分野があまりにも
広すぎて,
まず無理な相談
でしょう。

一方,多くの分野を
横並びに眺めると
共通する手順
(アルゴリズム)や
データ構造が
使われています。
まずは,
これらの常套手段を
身に付けることが,
プログラミングの
第1歩になります。

1970年代の
プログラマ達は,
これらの手順を
自ら考えることに
専念しました。
処理速度が遅く
少ないメモリの
コンピュータを使って,
どのような手順にすれば
効率よく処理できるか,
メモリ量を削減できるか
に頭を悩ましました。

プログラマにとって,
プログラミング=
パズルだった
かもしれません。
創造力を掻き立て
自由闊達な
知的欲求を満足させる
「技芸」だったのかも
しれません。

1970年代半ば頃から
構造化プログラミング,
ソフトウェア工学等の
話題が欧米,
アジア圏内を
駆け巡りました。

残業,徹夜が当たり前の
プログラマたちの
職場では
「Goto論争」が行き交い,
居酒屋では
開発手法の話題が花盛り。

プログラマたちは,
酒を酌み交わしながら,
自論を展開し,
口角泡を
飛ばしていました。

そのような中,
チューリッヒ工科大学の
Wirth先生らが
「データ構造+
アルゴリズム=
プログラム」
という本を
出版しました。

当時・電総研の
鳥居先生らによって
日本語訳が出され,
ソフトウェア企業と
いう狭い分野での
プログラマ達の
「分厚く隠れた
ベストセラー」とも
言われました。

筆者自身も,英語版,
次いで
日本語版を購入し,
Wirth先生らの
本に書かれた
美しいアルゴリズムに
酔いしれた
プログラマの一人です。

その後,
色々なアルゴリズムが
発表され,
アルゴリズム事典
なるものも
発刊されてきました。

アルゴリズムや
データ構造について,
色々な書籍が
発刊されています。
インターネットでも
公開されています。

普通の問題であれば,
新しいアルゴリズムを
最初から考える必要は
なさそうです。

手探りで
新たに処理手順を
考えるよりも,
先人たちが
考えに考え抜いた
アルゴリズムや
データ構造を参考にして,
自らが必要とする
プログラミング言語で
記述するほうが
手っ取り早い
かもしれない。

そう思えるぐらい,
様々なアルゴリズムの
本が氾濫しています。

著者と同様,
色々な人たちが
アルゴリズムに関する
Webサイトを
公開しています。

コンピュータも
高速化・大容量化し,
パソコンでさえ
昔の
汎用大型計算機よりも
高速・大容量化
しています。
「計算量の爆発」
については
気にしなければ
なりませんが,
速度や
メモリ量について
昔ほど
シビアでなくても
よいかもしれません。

多少の処理速度や
メモリ容量を我慢しても,
高速かつ
小容量の技巧を凝らした
複雑なアルゴリズムより,
明解でシンプルな
アルゴリズムの方が
好まれる時代かも
しれません。

いまや,
アルゴリズムや
データ構造の多くは
「技芸」の賜物である
「芸術品」では
ありません。
創造性逞しい
知的欲求の塊ではなく,
作る手順や作られた
物の形が決められ,
これらを後進に
伝承できる
「工芸品」に
近くなっています。

すなわち,
現在の
プログラミングでは,
いかに色々な
アルゴリズムや
データ構造における
常套手段を
知っているかが
鍵となりつつあります。

ただ,
これから
プログラミングを
始めようと
している方にとって,
既にまとめられている
アルゴリズムや
データ構造は,
やはり
他者が創案した
方法です。
借り物に過ぎません。

本書では,
なるべく
平易な言葉で
図を多用して,
明解に
説明するよう
心がけましたが,
紙に印刷された
ソースプログラムや
図を眺めるだけでは,
やはり
プログラムの流れや
データの変更の様子は
イメージしにくい
ものです。

そこで,
本書中に示した
サンプルプログラムを
Webページから
ダウンロードする
だけでなく,
プログラム
ステップごとの
実行位置や
変数内の値の変更を
アニメーション風に
観察できるための
プログラムを用意して,
ダウンロードできる
ようにしました。

ぜひ,
Webページから
体験用プログラムを
ダウンロードする
ことをお勧めします。

プログラムステップ単位
での実行順序を
観察しながら,
変数値を
確認することで,
動きを
実感しながら
理解できると
信じます。
本書と当社の
Webページからの
ダウンロード
プログラムの
利用によって,
読者の皆様が
アルゴリズムと
データ構造の
基本的な知識を
習得して
いただければ
幸いです。


メールにて,書名,
お届け先住所・氏名を
お知らせ頂くだけで
ご注文できます。

souzousha@au.wakwak.com

お支払は
代引きが標準です。

送料および
代引き手数料は
無料です。