c语言实现冒泡排序可视化
时间: 2023-09-18 07:07:14 浏览: 130
以下是使用C语言实现冒泡排序可视化的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define MAX_NUM 20 // 数组最大长度
#define MAX_VALUE 100 // 数组元素最大值
#define SLEEP_TIME 500 // 可视化延迟时间(毫秒)
void printArray(int a[], int n); // 打印数组
void bubbleSort(int a[], int n); // 冒泡排序
int main() {
int a[MAX_NUM];
int n = MAX_NUM;
// 随机生成数组
srand((unsigned)time(NULL));
for (int i = 0; i < n; i++) {
a[i] = rand() % (MAX_VALUE + 1);
}
// 打印初始数组
printf("Initial array:\n");
printArray(a, n);
// 冒泡排序
bubbleSort(a, n);
return 0;
}
// 打印数组
void printArray(int a[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
// 冒泡排序
void bubbleSort(int a[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
// 交换相邻元素
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
// 可视化交换过程
printf("Sorting: ");
for (int k = 0; k < n; k++) {
if (k == j) {
printf("\033[1;31m"); // 红色高亮
} else if (k == j + 1) {
printf("\033[1;32m"); // 绿色高亮
}
printf("%d ", a[k]);
printf("\033[0m"); // 恢复颜色
}
Sleep(SLEEP_TIME);
printf("\n");
}
}
}
// 打印排序后的数组
printf("Sorted array:\n");
printArray(a, n);
}
```
在上面的代码中,我们使用了ANSI转义序列来实现终端高亮显示。具体地,我们使用`\033[1;31m`来设置红色高亮,`\033[1;32m`来设置绿色高亮,`\033[0m`来恢复颜色。
当然,这种可视化方式也可以用于其他排序算法的演示。
阅读全文