帮我用echarts写一个基于冒泡排序,数据为[3,38,44,5,47,15,36,26,27,2,46,4,19,50,48]并显示出来,每一轮数据的排序过程动态显示并有两种背景颜色变化且排完一个数据再进行下一个数据排序的程序
时间: 2023-05-26 22:05:58 浏览: 88
基于C语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等
抱歉,我是语言模型,不能提供实时图表的功能。但是,下面是一个使用echarts和JavaScript的冒泡排序可视化代码,你可以参考一下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>冒泡排序可视化</title>
<!-- 引入echarts.js库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.9.0/echarts.min.js"></script>
</head>
<body>
<div id="chart" style="height:600px;"></div>
<script type="text/javascript">
// 初始化echarts实例
var myChart = echarts.init(document.getElementById('chart'));
// 定义待排序的数据
var data = [3,38,44,5,47,15,36,26,27,2,46,4,19,50,48];
// 定义冒泡排序函数
function bubbleSort(data) {
var len = data.length;
// 遍历n-1轮
for(var i = 0; i < len-1; i++) {
// 遍历n-i-1个元素
for(var j = 0; j < len-1-i; j++) {
// 如果前面一个元素大于后面一个元素,则交换它们
if(data[j] > data[j+1]) {
var temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
// 显示排序过程
showData(i+1, j+1, data);
}
}
}
}
// 定义显示排序过程的函数
function showData(i, j, data) {
var color;
if(j == data.length-1-i) {
color = '#02a8f4'; // 已排序区域的背景颜色
} else {
color = '#f9f9f9'; // 等待排序区域的背景颜色
}
// 定义x轴和y轴数据
var xAxisData = [];
var yAxisData = [];
for(var k = 0; k < data.length; k++) {
xAxisData.push(k+1);
yAxisData.push(data[k]);
}
// 显示图表
myChart.setOption({
title: {
text: '第' + i + '轮,第' + j + '个'
},
grid: {
top: '10%',
left: '10%',
right: '10%'
},
xAxis: {
type: 'category',
data: xAxisData
},
yAxis: {
type: 'value'
},
series: [{
name: '数据',
type: 'bar',
data: yAxisData,
itemStyle: {
color: function(params) {
if(params.dataIndex == j || params.dataIndex == j+1) {
return '#ff5050'; // 当前待排序区域的颜色
} else {
return color; // 已排序和等待排序区域的颜色
}
}
}
}]
});
// 延迟1秒后,继续执行下一轮排序
setTimeout(function() {
if(i == data.length-1) {
// 最后一轮排序后,显示结果
myChart.setOption({
title: {
text: '排序完成'
},
series: [{
name: '数据',
type: 'bar',
data: yAxisData,
itemStyle: {
color: '#02a8f4' // 已排序区域的颜色
}
}]
});
} else {
// 继续执行下一轮排序
showData(i, j, data);
}
}, 1000);
}
// 调用冒泡排序函数
bubbleSort(data);
</script>
</body>
</html>
```
以上代码使用了echarts.js库来绘制图表,并实现了冒泡排序的可视化。当代码执行时,会按照{"第x轮,第y个"}的格式显示每一轮排序的进程,而且排序过程中待排序区域的背景会变成红色(#ff5050),已排序区域的背景会变成浅蓝色(#02a8f4),等待排序区域的背景则是白色(#f9f9f9)。排序完成后,会显示排序结果并变成浅蓝色的背景。
希望这个示例可以帮到你。
阅读全文