帮我用echarts写一个基于冒泡排序,数据为[3,38,44,5,47,15,36,26,27,2,46,4,19,50,48]并显示出来,每一条数据的排序过程可视化且对于正在排序的数据条用红色背景,交换后的数据用黄色背景,待排序数据默认蓝色背景的程序
时间: 2023-05-26 07:05:42 浏览: 91
TIA博途-冒泡排序SCL算法-全局FC库文件-V15版本.zip
5星 · 资源好评率100%
以下是基于冒泡排序的可视化程序:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts 表格</title>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.9.0/echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 800px;height: 600px;"></div>
<script>
var data = [3,38,44,5,47,15,36,26,27,2,46,4,19,50,48];
var option = {
title: {
text: '冒泡排序'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'line'
}
},
xAxis: {
data: data.map(function (item, index) { return index + 1; })
},
yAxis: {},
series: [{
name: '冒泡排序',
type: 'bar',
data: data,
itemStyle: {
normal: {
color: 'blue'
}
}
}]
};
var myChart = echarts.init(document.getElementById('main'));
myChart.setOption(option);
function bubbleSort() {
for (var i = 0; i < data.length - 1; i++) {
for (var j = 0; j < data.length - 1 - i; j++) {
if (data[j] > data[j + 1]) {
var temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
updateChart(j, j + 1);
}
}
}
}
function updateChart(index1, index2) {
var itemStyle = {
normal: {
color: function (params) {
if (params.dataIndex === index1 || params.dataIndex === index2) {
return 'yellow';
} else if (params.dataIndex > data.length - index1 - 2 || params.dataIndex > data.length - index2 - 2) {
return 'red';
} else {
return 'blue';
}
}
}
};
option.series[0].data = data;
option.series[0].itemStyle = itemStyle;
myChart.setOption(option);
}
bubbleSort();
</script>
</body>
</html>
```
程序将数据渲染成一个条形图,并在每一次冒泡排序时更新图表的颜色以达到可视化的效果。正在排序的数据条使用红色背景,交换后的数据条使用黄色背景,待排序数据默认为蓝色背景。
在页面加载完成后,程序会调用 `bubbleSort` 函数进行冒泡排序,并在每一次交换数据时调用 `updateChart` 函数更新图表的颜色。程序使用了 ECharts 这一前端数据可视化库来绘制图表。
阅读全文