帮我用echarts写一个基于冒泡排序,数据为[3,38,44,5,47,15,36,26,27,2,46,4,19,50,48],每一条数据的排序过程可视化且对于正在排序的数据条用红色背景,交换后的数据用黄色背景,待排序数据默认蓝色背景的程序
时间: 2023-05-26 17:05:36 浏览: 80
以下是使用 echarts 实现冒泡排序可视化的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts - BubbleSort Visualization</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
</head>
<body>
<!-- 创建一个 echarts 容器 -->
<div id="myChart" style="width:800px;height:600px;"></div>
<script>
// 定义排序数据
var data = [3,38,44,5,47,15,36,26,27,2,46,4,19,50,48];
// 创建一个 echarts 实例
var myChart = echarts.init(document.getElementById('myChart'));
// 定义初始 option
var option = {
title: {
text: 'BubbleSort Visualization'
},
animationDuration: 1000,
animationEasing: 'linear',
xAxis: {
show: false,
type: 'category',
data: []
},
yAxis: {
show: false,
type: 'value',
max: 50
},
series: [{
type: 'bar',
data: [],
itemStyle: {
color: 'blue',
}
}]
};
// 将初始 option 设置到 echarts 实例中
myChart.setOption(option);
// 定义冒泡排序函数
function bubbleSort(data) {
var len = data.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - i - 1; j++) {
// 将正在排序的数据标记为红色
myChart.setOption({
series: [{
data: data.map(function(item, index) {
return {
value: item,
itemStyle: {
color: index === j || index === j + 1 ? 'red' : 'blue'
}
}
})
}]
});
// 如果前一个数大于后一个数,交换它们的位置,并将交换后的数据标记为黄色
if (data[j] > data[j + 1]) {
var temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
myChart.setOption({
series: [{
data: data.map(function(item, index) {
return {
value: item,
itemStyle: {
color: index === j || index === j + 1 ? 'yellow' : 'blue'
}
}
})
}]
});
}
}
}
// 将排序完成后的数据标记为蓝色
myChart.setOption({
series: [{
data: data.map(function(item) {
return {
value: item,
itemStyle: {
color: 'blue'
}
}
})
}]
});
}
// 调用冒泡排序函数
bubbleSort(data);
</script>
</body>
</html>
```
运行以上代码,即可在页面上看到基于冒泡排序的可视化效果。
阅读全文