プログラミングには欠かすことができない開発者の基礎知識「アルゴリズムとデータ構造」。最近のプログラミング言語は機能やライブラリが充実し、これらを一から実装する必要性は薄れてきているかもしれませんが、知識がないよりはあったほうが良いのは確かです。
本日紹介する「Cosmos」は、このアルゴリズムとデータ構造を、さまざまなプログラミング言語で実装したサンプルコード格納する、オフラインで閲覧可能なリポジトリです。
サンプルコードはC、C++、Java、Python、Go、その他のプログラミング言語で記述されていて、多くの開発者にとって利用しやすいものとなっています。
Cosmosに含まれる情報は以下のカテゴリに分類されています。
- AI
- バックトラック法
- ビット操作
- セルオートマトン
- 計算幾何学
- 暗号
- データ構造
- 分割統治法
- 動的プログラミング
- グラフアルゴリズム
- 貪欲アルゴリズム
- 数学アルゴリズム
- オペレーティングシステムシステム
- ランダム化アルゴリズム
- 検索
- 選択
- ソート
- 平方根分解
- 文字列アルゴリズム
- その他
例えば「ソート」カテゴリの中には、「バブルソート」「マージソート」「クイックソート」を始めとしたお馴染みのソートアルゴリズムが含まれていて、それぞれのソートアルゴリズムごとに、サンプルコードや簡単な説明がまとめられています。
「クイックソート」はメジャーなアルゴリズムだけあって、C/C++/C#/Python/Go/Java/JavaScript/Ruby/Swiftなど、かなり多くのプログラミング言語のサンプルコードが含まれています。
インターネットが利用できない非常事態にそなえたいという方、あるいは毎回検索するのがめんどくさいという方はローカルにgit cloneしておくと便利そうです。