Skip to content

konekotech/sort_algorythms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

各アルゴリズムの 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関数を必ず含みます。それ以外に便利な関数があれば、それも含まれています。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •