データ構造とプログラム作成技法の名著
1979年9月に初版が発売になった「アルゴリズム+データ構造=プログラム」を紹介します。
その当時、私は社会人2年目でオフコンの業務システム開発を担当していました。業務で必要になったために本書を読んだわけではなく、いろんなことに興味を持って勉強していました。大学で計算機科学を学んだとはいえ、まだまだ経験や知識が不足しています。この本は、PASCAL言語でアルゴリズムとデータ構造について説明しているので、アルゴリズムの基礎を固める目的もありました。
アルゴリズム+データ構造=プログラム
本の情報
- アルゴリズム+データ構造=プログラム
- Niklaus Wirth 著 / 片山 卓也 訳
- 1979年9月15日 初版発行
- 日本コンピュータ協会
- 発売元: 科学技術出版社
目次
第1章 基本的データ構造
第2章 ソーティング
第3章 再帰的アルゴリズム
第4章 動的データ構造
第5章 言語構造とコンパイラ
BASIC言語でソート
1981年ごろ、私はパソコンによる業務処理の開発をしていました。パソコンは、BASIC言語が使えました。しかし、業務処理を行うには貧弱な環境です。マスターファイルをキーでアクセスする方法やソートユーティリティーなどありません。
マッチング処理などを行うために自分でソートアルゴリズムをBASIC言語で書きました。そのとき、本書の「第2章 ソーティング」をじっくり読み返しました。
BASIC言語で書いているので、1000件程度でもバブルソートでは遅すぎます。名前からして速そうなクイックソートを使いたいと考えました。PASCAL言語で説明してあるクイックソートアルゴリズムをPADで示します。
PADについては、究極のプログラム設計図 PAD解説を見てください。
クイックソートアルゴリズムは、再帰呼び出し(リカーシブコール)します。しかし、当時のBASICでは再帰呼び出しなどできませんでした。「アルゴリズム+データ構造=プログラム」には、非再帰版のクイックソートアルゴリズムも説明しています。
PASCAL言語で説明してあるアルゴリズムをBASIC言語に書き換えてソートプログラムを作成して使用しました。
超最速ソートアルゴリズム
2018年、超最速ソートアルゴリズム解説という電子書籍を執筆しました。
この本の主たる目的は、究極のソートアルゴリズムである「ダイレクトマップソート」を紹介することでした。この企画を進めるうちに、一般的なソートアルゴリズムの説明があった方が、その違いが分かりよいと考え、「第3章 ソート研究」を追加しました。
第3章 ソート研究
3.1 基本型ソート ・・・ 挿入ソート、選択ソート、交換ソート
3.2 改良型ソート ・・・ シェルソート、ヒープソート、クイックソート
3.3 比較しないソート ・・・ バケットソート、度数ソート、基数ソート
そのとき、39年前に購入した「アルゴリズム+データ構造=プログラム」が役に立ちました。名著は、時を超えて知恵を伝えてくれますね。