#include #include #include #define N 100 #define K 100 int t[N]; void allume(int i, int j) { Rect r; SetRect(&r,4*i,4*j,4*(i+1),4*(j+1)); PaintRect(&r); } void eteint(int i) { Rect r; PenPat(white); SetRect(&r,4*i,0,4*(i+1),4*(K+1)); PaintRect(&r); PenPat(black); } void dessine(void) { int i; for (i=0 ; i < N ; i++) { allume(i,t[i]); } } void nouveau(int i, int j) { eteint(i); allume(i,j); } void main(void) { int i,j; int tmp; Rect r; InitQuickDraw(); SetRect(&r,100,100,100+4*(N+2),100+4*(K+3)); SetDrawingRect(&r); for (;;) { for (i = 0 ; i < N ; i++) { t[i] = random(K+1); } ShowDrawing(); dessine(); for (i= N-1 ; i >= 0 ; i--) { for (j=1 ; j <= i ; j++) { if (t[j-1] > t[j]) { tmp = t[j-1] ; t[j-1] = t[j]; nouveau(j-1,t[j]); t[j] = tmp; nouveau(j,tmp); } } } getchar(); } }