#include <stdio.h> #include <easyx.h> #include <stdlib.h> #include <time.h> int arr[100] = { 0 }; void draw(int x, int y); void mySort() { for (int i = 0; i < 99; i++) { for (int j = 0; j < 99 - i; j++) { if (arr[j]<arr[j+1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; draw(j,j+1); } } } } void draw(int x,int y) { //清除改变了值对应位置的图形 clearrectangle(x * 5, 0, x * 5 + 5, 250 * 3); clearrectangle(y * 5, 0, y * 5 + 5, 250 * 3); //画新的图像 fillrectangle(x * 5, arr[x] * 3, x * 5 + 5, 250 * 3); fillrectangle(y * 5, arr[y] * 3, y * 5 + 5, 250 * 3); Sleep(10); } int main() { initgraph(100 * 5, 250 * 3); srand((unsigned)time(NULL)); for (int i = 0; i < 100; i++) { arr[i] = rand() % 249+1; } //提前画整个页面画出来 for (int i = 0; i < 100; i++) { setlinecolor(BLUE); setfillcolor(RED); fillrectangle(i * 5, 250 * 3-arr[i] * 3, i * 5 + 5, 250 * 3); } mySort(); getchar(); getchar(); closegraph(); return 0; }
可以类似上面的操作,用于其他排序算法,但是在修改图形界面大小的时候,需要重写计算画的位置和高度
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!