Data Structures 2
TeX

Data Structures 2

データ構造IIの学術プロジェクト。C言語で5つのソートアルゴリズムを複数の入力サイズでベンチマークし、Python/matplotlibでパフォーマンスチャートを生成します。

データ構造IIの学術プロジェクト。C言語で5つのソートアルゴリズムを複数の入力サイズに対してベンチマークし、Python/matplotlibでパフォーマンスチャートを生成します。

アルゴリズムの結果を説明するPythonコードによって生成されたレポート

アルゴリズム

アルゴリズム 平均ケース 最悪ケース
バブルソート O(n²) O(n²)
選択ソート O(n²) O(n²)
挿入ソート O(n²) O(n²)
クイックソート O(n log n) O(n²)
ヒープソート O(n log n) O(n log n)

仕組み

  1. Cプログラムmain.c + sorting.c)がサイズ[100, 1000, 5000, 10000, 50000, 100000]のランダムな整数配列を生成し、各アルゴリズムをコピーに対して実行し、実行ごとのメトリクス(交換回数、比較回数、経過時間)を./executions/下のバイナリファイルに書き込みます。
  2. Pythonスクリプトmain.py)がCプログラムをコンパイルして実行し、バイナリデータを読み取り、パフォーマンスチャートを./graficos/に保存します。

必要条件

  • GCC
  • Python 3
  • matplotlib(pip install matplotlib

使用方法

# ベンチマーク実行+チャート生成
python main.py

またはCベンチマークのみを実行:

make
./Trabalho_Pratico_II

出力

チャートは./graficos/に保存されます:

  • relatorio_completo.png — 交換回数、比較回数、時間を1つの図に表示
  • trocas_comparacao.png — アルゴリズムごとの交換回数
  • comparacoes_comparacao.png — アルゴリズムごとの比較回数
  • tempo_comparacao.png — アルゴリズムごとの実行時間

プロジェクト構成

.
├── main.c          # ベンチマークドライバ
├── sorting.c       # アルゴリズムの実装
├── sorting.h       # 関数宣言
├── main.py         # データリーダー+チャート生成
├── makefile
├── requirements.txt
└── executions/     # バイナリ結果ファイル(実行時に生成)