我正在尝试使用 d3.js 可视化排序算法,但我有点卡住了。当我尝试通过将其包含在排序循环中来重新绘制图形时。该图仅显示最终值。使用setInterval函数后也发生了同样的事情。我在下面包含了没有所有计时器功能的脚本(不包括 settime 功能)
var arr = new Array(10, 34, 66, 3, 56, 45, 67, 43, 45, 7);
var wi = 500;
var he = 500;
var temp = 0;
//Scaling
var canvas = d3.select("body")
.append("svg")
.attr("width", wi)
.attr("height", he);
for (l = 9; l > 0; l--) {
for( p=0;p<l; p++){
if(arr[p]>arr[p+1]){
swap(p,arr);
}
}
updatevisualization(arr);
}
function swap(n, arr) {
temp = arr[n];
arr[n] = arr[n + 1];
arr[n + 1] = temp;
}
//visualizaiton
function updatevisualization(xx) {
var bars = canvas.selectAll("rect")
.data(xx)
.enter()
.append("rect")
.attr("height", function(d) {
return (5 * d);
})
.attr("width", 10)
.attr("x", function(d, i) {
return i * 20;
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>