直接插入排序easyX
时间: 2023-12-11 16:48:45 浏览: 104
直接插入排序
好的,下面是一个简单的插入排序实现,并使用easyX库进行可视化展示:
```c++
#include <graphics.h>
#include <conio.h>
#include <time.h>
const int WINDOW_WIDTH = 800;
const int WINDOW_HEIGHT = 600;
const int BAR_WIDTH = 4;
const int BAR_HEIGHT = 400;
const int BAR_SPACING = 1;
void drawBar(int x, int height, COLORREF color) {
setfillcolor(color);
bar(x, WINDOW_HEIGHT - height, x + BAR_WIDTH, WINDOW_HEIGHT);
}
void drawArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
drawBar(i * (BAR_WIDTH + BAR_SPACING), arr[i], WHITE);
}
}
void insertionSort(int arr[], int size) {
for (int i = 1; i < size; i++) {
int j = i;
while (j > 0 && arr[j] < arr[j - 1]) {
// swap arr[j] and arr[j - 1]
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
}
}
int main() {
// 初始化图形窗口
initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);
// 随机生成数组
srand(time(NULL));
const int ARRAY_SIZE = WINDOW_WIDTH / (BAR_WIDTH + BAR_SPACING);
int arr[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = rand() % BAR_HEIGHT;
}
// 排序并可视化展示过程
drawArray(arr, ARRAY_SIZE);
Sleep(1000);
insertionSort(arr, ARRAY_SIZE);
drawArray(arr, ARRAY_SIZE);
// 等待用户输入并关闭图形窗口
getch();
closegraph();
return 0;
}
```
代码中使用了easyX图形库进行可视化展示,通过随机生成一个数组,并在插入排序过程中不断更新可视化展示,最终展示排序后的结果。如果需要运行代码,请确保已安装easyX库并正确配置开发环境。
阅读全文