冒泡排序c++可视化程序基于easyx库并给出注释
时间: 2024-01-24 17:17:32 浏览: 123
以下是基于EasyX库实现冒泡排序可视化的C++程序,注释在代码中:
```c++
#include <graphics.h>
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int NUM = 50; // 数组元素个数
const int INTERVAL = 20; // 每个矩形之间的间距
const int WIDTH = 10; // 矩形宽度
const int HEIGHT = 500; // 矩形高度
int nums[NUM]; // 存储随机数的数组
void initNums() {
srand((unsigned)time(NULL)); // 设置随机数种子
for (int i = 0; i < NUM; i++) {
nums[i] = rand() % (HEIGHT / 10) + 1; // 随机生成一个 1~50 的整数
}
}
void drawNums() {
cleardevice(); // 清空画布
for (int i = 0; i < NUM; i++) {
int x = i * (WIDTH + INTERVAL) + INTERVAL; // 计算矩形的左上角横坐标
int y = HEIGHT - nums[i] * 10 + INTERVAL; // 计算矩形的左上角纵坐标
setfillcolor(BLUE); // 设置填充颜色
solidrectangle(x, y, x + WIDTH, HEIGHT + INTERVAL); // 绘制矩形
}
}
void bubbleSort() {
for (int i = 0; i < NUM - 1; i++) {
for (int j = 0; j < NUM - 1 - i; j++) {
if (nums[j] > nums[j + 1]) {
swap(nums[j], nums[j + 1]); // 交换相邻两个数
drawNums(); // 重新绘制矩形
delay_ms(50); // 延时 50ms
}
}
}
}
int main() {
initgraph(900, 600); // 创建绘图窗口
initNums(); // 初始化随机数数组
drawNums(); // 绘制矩形
bubbleSort(); // 执行冒泡排序
getch(); // 等待用户按下任意键
closegraph(); // 关闭绘图窗口
return 0;
}
```
在代码中,我们使用了EasyX库提供的`initgraph`函数创建了一个900x600的绘图窗口,并定义了一些常量,如矩形宽度、高度、间距等。我们通过`initNums`函数生成了50个随机数,并使用`drawNums`函数将这些随机数绘制成蓝色的矩形。
在`bubbleSort`函数中,我们使用了两层for循环来实现冒泡排序。每次比较相邻的两个数,如果前一个数大于后一个数,则交换它们。在交换两个数后,我们调用`drawNums`函数重新绘制矩形,然后使用`delay_ms`函数延迟50ms,以便让用户看清楚这个过程。
最后,我们在`main`函数中按照如下顺序执行了几个函数:创建绘图窗口、初始化随机数、绘制矩形、执行冒泡排序、等待用户按下任意键、关闭绘图窗口。
阅读全文