アルゴリズム+データ構造=プログラム

アルゴリズム+データ構造=プログラム

アルゴリズム+データ構造=プログラム

データ構造とプログラム作成技法の名著

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年前に購入した「アルゴリズム+データ構造=プログラム」が役に立ちました。名著は、時を超えて知恵を伝えてくれますね。