学完排序,于是写了一个排序过程可视化的控制台程序。
运行环境:win10
编译器 :vs2017
编程语言:C++
上图:
代码:
#include<iostream>
#include<iomanip>
#include<windows.h>
#include<vector>
using namespace std;
const int MaxValue = 50; //数组中数据的最大值
int num = 0; //定义全局变量 数组个数
//移动光标位置函数
void gotoxy(int x, int y)
{
COORD pos = { x,y };
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
}
//清屏函数
void clear(vector<int> buf)
{
gotoxy(0, 0); //调用移动光标位置函数,每次绘图都从0,0位置开始
for (int i = 0; i < num; i++)
{
for (int j = 0; j < MaxValue; j++)
{
cout << " ";
}
cout << endl;
}
}
//绘图函数
void draw(vector<int> buf,int n = 0)
{
Sleep(100); //每次绘图的停顿时间(可自定义)
clear(buf); //绘图前清空控制台
gotoxy(0, 0);
//输出vector当前的排列顺序
for (int i = n; i < buf.size(); i++)
{
//输出该数字,占3格
cout << setw(3) <<left << buf[i];
//输出个数等同与该数字的“■”作为图像
for (int j = 0; j < buf[i]; j++)
{
cout << "■";
}
cout << endl;
}
}
冒泡排序 /
void BubbleSort(vector&