SALは整列アニメーションのためのライブラリです. SALのアニメーションは, アニメーション用の関数を整列アルゴリズムの適切な所に挿入することで実現されます.
SALでは,単にアニメーションを行うだけでなく, 実行時間やデータの交換回数・データの参照回数を表示する事も可能です. また,アニメーションを行わずにこれらの情報だけを表示することも可能です.
ライブラリは,Xlibの機能だけを利用して作成されていますが, 実行時間の測定部分に機種依存があって, どこででも動くというわけではないでしょう. これは,将来的に改善する予定です. 現在の所,
での動作が確認されています. 動作確認できたら連絡してくださると助かります(_o_)ここでは,単純ソートで,実際にアニメーションを行わせるためのコードを 紹介します.
文中赤字がアニメーションを行うために必要な関数です.
#include "anim.h"
#define DATA_SIZE 100
int data[DATA_SIZE];
void swap(i,j) {
int tmp;
tmp=data[i]; data[i]=data[j]; data[j]=tmp;
}
int main() {
int i,j;
/* データの初期化 */
srandom((int)time(NULL));
AnimInit(DATA_SIZE,VIEW);
for(i=0;i<DATA_SIZE;i++) {
data[i]=(int)(DATA_SIZE*((double)random()/RAND_MAX));
AnimInitData(i,data[i]);
}
AnimShowData(0);
/* 実際のソート */
for(i=0;i<(DATA_SIZE-1);i++)
for(j=i+1;j<DATA_SIZE;j++) {
AnimHilightData(j);
if(data[i]>data[j]) {
swap(i,j);
AnimSwapData(i,j);
}
AnimUnhilightData(j);
}
/* 統計情報の出力 */
AnimShowStats();
}
|
![[ScreenShot]](ScreenShot.jpg)
Swap count: 1731 Hilight count: 4950 Sorting time: 1342.9839[sec] |
| 類別 | 関数名 | 機能 |
|---|---|---|
| 初期化関係 | AnimInit(int dataSize,int viewMode) | アニメーションの初期化,viewModeはアニメーションの表示・非表示をVIEW/NoVIEWで指定 |
| AnimInitData(int i,int value) | i番目の初期データ値valueの設定 | |
| AnimShowData() | 初期データの表示 | |
| アニメーション | AnimSwapData(int i,j) | データi,jの交換 |
| AnimHilightData(int i) | データiの強調表示 | |
| AnimUnhilightData(int i) | データiの強調表示を止める | |
| パラメータの設定 | AnimSetWaitTime(int time) | 待ち時間time(マイクロ秒)の設定 |
| AnimSetView(int value) | アニメーション表示モードの変更,アニメーションの表示・非表示をVIEW/NoVIEWで指定 | |
| AnimSetAnimation(int value) | データ交換時のアニメーションを行うか行わないかを,ANIM/NoANIMで指定 | |
| 統計情報の出力 | AnimShowStats() | 統計情報を主力する |
configureを用意していますので,インストールは以下の手順にしたがってください.