/sort_algorythms

Primary LanguageJupyter Notebook

ソートアルゴリズムを学ぶためのリポジトリ

各アルゴリズムの README

バブルソート

選択ソート

挿入ソート

クイックソート

二分木ソート

マージソート

ヒープソート

基数ソート

動作要件

  • Docker がインストールされていること
  • Docker Compose が使用できること
  • Docker を使わなくても動作はしますが、サポート対象外です

各アルゴリズムの C 言語での実装について

ファイル構成

各アルゴリズムは、clibsディレクトリの中でディレクトリ分けされていて、それぞれ C 言語の共有ライブラリとして実装されています。各アルゴリズムのディレクトリには、以下のファイルが含まれています。

  • includeディレクトリ: ヘッダファイル。特に、lib.hは外部へ関数を公開するためのヘッダファイルになっています。
  • srcディレクトリ: ソースファイル。特に、lib.cは外部へ関数を公開するためのソースファイルになっています。
  • testディレクトリ: テストファイル。特に、test.c は各アルゴリズムのテストを行うためのファイルになっており、共有ライブラリとは別にコンパイルされるようになっています。

テストの実行方法

test.cを実行するには、各アルゴリズムのディレクトリに移動して、以下のコマンドを実行してください。例えば、バブルソートの場合は、bubble_sort ディレクトリに移動してください。

cd ./bubble_sort
docker compose up

C のソースコードを変更しても、--build オプションをつける必要はありません。docker compose upのみで、新しいバイナリがビルドされます。

Python について

Python によって、C 言語の共有ライブラリを用いて、numpyの配列のソートを行うことができます。

起動方法

sort_algorithms ディレクトリに移動して、以下のコマンドを実行してください。

docker compose up

なお、C や Python のソースコードを変更しても、--buildオプションをつける必要はありません。docker compose up のみで、新しいバイナリがビルドされます。C や Python のソースコードを変更した場合は、docker compose upを再度実行するか、現在実行中のコンテナ内でcd /app && ./setup.shを実行してください。

docker compose upを起動してしばらく待つと、Jupyter notebookが起動しますので、ブラウザでhttp://127.0.0.1:8888にアクセスしてください。

VS Code 上でipynbファイルを開いてコードを実行したい場合は、Jupyter Notebookが起動したあとで、以下の操作を行なってください。

右上のSelect Kernelをクリック

Select kernel

Existing Jupyter Server... を選択

Existing Jupyter Server...

http://127.0.0.1:8888を入力して、Enter

Input URL

Yesを選択

Press Yes

適当な名前をつける

Name

Python3 (ipykernel) をクリック

Select Python3

以上で、VS Code 上でipynbファイルを開いてコードを実行することができます。いつも通り、三角ボタンからセルを実行しましょう。

Finished

Python ライブラリの使用方法

Python によるラッパー関数は、mypysortというライブラリにまとめてあります。すでにpip install済みです。mypysortライブラリにはさらに各ソートごとにモジュールが分かれています。例えば、バブルソートはmypysort.bubble_sortモジュールにまとめられています。

各モジュールには、sort関数を必ず含みます。それ以外に便利な関数があれば、それも含まれています。